mirror of
https://github.com/arcan1s/ahriman.git
synced 2026-03-11 04:23:38 +00:00
feat: store and show pkgbuild (implements #157)
This commit is contained in:
@@ -18,7 +18,7 @@ def test_changes(application_repository: ApplicationRepository, package_ahriman:
|
||||
"""
|
||||
must generate changes for the packages
|
||||
"""
|
||||
changes = Changes("hash", "change")
|
||||
changes = Changes("sha", "change")
|
||||
hashes_mock = mocker.patch("ahriman.core.status.local_client.LocalClient.package_changes_get", return_value=changes)
|
||||
changes_mock = mocker.patch("ahriman.core.repository.Repository.package_changes", return_value=changes)
|
||||
report_mock = mocker.patch("ahriman.core.status.local_client.LocalClient.package_changes_update")
|
||||
@@ -42,6 +42,20 @@ def test_changes_skip(application_repository: ApplicationRepository, package_ahr
|
||||
report_mock.assert_not_called()
|
||||
|
||||
|
||||
def test_changes_no_update(application_repository: ApplicationRepository, package_ahriman: Package,
|
||||
mocker: MockerFixture) -> None:
|
||||
"""
|
||||
must skip update if package_changes returns None (no new commits)
|
||||
"""
|
||||
changes = Changes("sha", "change")
|
||||
mocker.patch("ahriman.core.status.local_client.LocalClient.package_changes_get", return_value=changes)
|
||||
mocker.patch("ahriman.core.repository.Repository.package_changes", return_value=None)
|
||||
report_mock = mocker.patch("ahriman.core.status.local_client.LocalClient.package_changes_update")
|
||||
|
||||
application_repository.changes([package_ahriman])
|
||||
report_mock.assert_not_called()
|
||||
|
||||
|
||||
def test_clean_cache(application_repository: ApplicationRepository, mocker: MockerFixture) -> None:
|
||||
"""
|
||||
must clean cache directory
|
||||
|
||||
@@ -6,6 +6,7 @@ from unittest.mock import call as MockCall
|
||||
|
||||
from ahriman.core.build_tools.sources import Sources
|
||||
from ahriman.core.exceptions import CalledProcessError
|
||||
from ahriman.models.changes import Changes
|
||||
from ahriman.models.package import Package
|
||||
from ahriman.models.package_source import PackageSource
|
||||
from ahriman.models.pkgbuild_patch import PkgbuildPatch
|
||||
@@ -19,35 +20,27 @@ def test_changes(mocker: MockerFixture) -> None:
|
||||
"""
|
||||
fetch_mock = mocker.patch("ahriman.core.build_tools.sources.Sources.fetch_until")
|
||||
diff_mock = mocker.patch("ahriman.core.build_tools.sources.Sources.diff", return_value="diff")
|
||||
read_mock = mocker.patch("ahriman.core.build_tools.sources.Sources.read", return_value="pkgbuild")
|
||||
local = Path("local")
|
||||
last_commit_sha = "sha"
|
||||
|
||||
assert Sources.changes(local, last_commit_sha) == "diff"
|
||||
assert Sources.changes(local, last_commit_sha) == Changes(last_commit_sha, "diff", "pkgbuild")
|
||||
fetch_mock.assert_called_once_with(local, commit_sha=last_commit_sha)
|
||||
diff_mock.assert_called_once_with(local, last_commit_sha)
|
||||
|
||||
|
||||
def test_changes_skip(mocker: MockerFixture) -> None:
|
||||
"""
|
||||
must return none in case if commit sha is not available
|
||||
"""
|
||||
fetch_mock = mocker.patch("ahriman.core.build_tools.sources.Sources.fetch_until")
|
||||
diff_mock = mocker.patch("ahriman.core.build_tools.sources.Sources.diff")
|
||||
|
||||
assert Sources.changes(Path("local"), None) is None
|
||||
fetch_mock.assert_not_called()
|
||||
diff_mock.assert_not_called()
|
||||
read_mock.assert_called_once_with(local, "HEAD", Path("PKGBUILD"))
|
||||
|
||||
|
||||
def test_changes_unknown_commit(mocker: MockerFixture) -> None:
|
||||
"""
|
||||
must return none in case if commit sha wasn't found at the required depth
|
||||
must return changes without diff in case if commit sha wasn't found at the required depth
|
||||
"""
|
||||
mocker.patch("ahriman.core.build_tools.sources.Sources.fetch_until", return_value=None)
|
||||
diff_mock = mocker.patch("ahriman.core.build_tools.sources.Sources.diff")
|
||||
read_mock = mocker.patch("ahriman.core.build_tools.sources.Sources.read", return_value="pkgbuild")
|
||||
|
||||
assert Sources.changes(Path("local"), "sha") is None
|
||||
assert Sources.changes(Path("local"), "sha") == Changes("sha", None, "pkgbuild")
|
||||
diff_mock.assert_not_called()
|
||||
read_mock.assert_called_once_with(Path("local"), "HEAD", Path("PKGBUILD"))
|
||||
|
||||
|
||||
def test_extend_architectures(mocker: MockerFixture) -> None:
|
||||
@@ -603,3 +596,12 @@ def test_patch_apply_function(sources: Sources, mocker: MockerFixture) -> None:
|
||||
|
||||
sources.patch_apply(local, patch)
|
||||
write_mock.assert_called_once_with(local / "PKGBUILD")
|
||||
|
||||
|
||||
def test_read(sources: Sources, mocker: MockerFixture) -> None:
|
||||
"""
|
||||
must read file from commit
|
||||
"""
|
||||
check_output_mock = mocker.patch("ahriman.core.build_tools.sources.check_output", return_value="content")
|
||||
assert sources.read(Path("local"), "sha", Path("PKGBUILD")) == "content"
|
||||
check_output_mock.assert_called_once()
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
from ahriman.core.database.migrations.m017_pkgbuild import steps
|
||||
|
||||
|
||||
def test_migration_pkgbuild() -> None:
|
||||
"""
|
||||
migration must not be empty
|
||||
"""
|
||||
assert steps
|
||||
@@ -8,34 +8,35 @@ def test_changes_insert_get(database: SQLite, package_ahriman: Package) -> None:
|
||||
"""
|
||||
must insert and get changes
|
||||
"""
|
||||
database.changes_insert(package_ahriman.base, Changes("sha1", "change1"))
|
||||
assert database.changes_get(package_ahriman.base).changes == "change1"
|
||||
changes1 = Changes("sha1", "change1", "pkgbuild1")
|
||||
database.changes_insert(package_ahriman.base, changes1)
|
||||
assert database.changes_get(package_ahriman.base) == changes1
|
||||
changes2 = Changes("sha2", "change2", "pkgbuild2")
|
||||
|
||||
database.changes_insert(package_ahriman.base, Changes("sha2", "change2"),
|
||||
RepositoryId("i686", database._repository_id.name))
|
||||
assert database.changes_get(package_ahriman.base).changes == "change1"
|
||||
assert database.changes_get(
|
||||
package_ahriman.base, RepositoryId("i686", database._repository_id.name)).changes == "change2"
|
||||
database.changes_insert(package_ahriman.base, changes2, RepositoryId("i686", database._repository_id.name))
|
||||
assert database.changes_get(package_ahriman.base) == changes1
|
||||
assert database.changes_get(package_ahriman.base, RepositoryId("i686", database._repository_id.name)) == changes2
|
||||
|
||||
|
||||
def test_changes_insert_remove(database: SQLite, package_ahriman: Package, package_python_schedule: Package) -> None:
|
||||
"""
|
||||
must remove changes for the package
|
||||
"""
|
||||
database.changes_insert(package_ahriman.base, Changes("sha1", "change1"))
|
||||
database.changes_insert(package_python_schedule.base, Changes("sha3", "change3"))
|
||||
database.changes_insert(package_ahriman.base, Changes("sha2", "change2"),
|
||||
changes3 = Changes("sha3", "change3", "pkgbuild3")
|
||||
database.changes_insert(package_ahriman.base, Changes("sha1", "change1", "pkgbuild1"))
|
||||
database.changes_insert(package_python_schedule.base, changes3)
|
||||
database.changes_insert(package_ahriman.base, Changes("sha2", "change2", "pkgbuild2"),
|
||||
RepositoryId("i686", database._repository_id.name))
|
||||
|
||||
database.changes_remove(package_ahriman.base)
|
||||
assert database.changes_get(package_ahriman.base).changes is None
|
||||
assert database.changes_get(package_python_schedule.base).changes == "change3"
|
||||
assert database.changes_get(package_python_schedule.base) == changes3
|
||||
|
||||
# insert null
|
||||
database.changes_insert(package_ahriman.base, Changes(), RepositoryId("i686", database._repository_id.name))
|
||||
assert database.changes_get(
|
||||
package_ahriman.base, RepositoryId("i686", database._repository_id.name)).changes is None
|
||||
assert database.changes_get(package_python_schedule.base).changes == "change3"
|
||||
assert database.changes_get(package_python_schedule.base) == changes3
|
||||
|
||||
|
||||
def test_changes_insert_remove_full(database: SQLite, package_ahriman: Package,
|
||||
@@ -43,13 +44,12 @@ def test_changes_insert_remove_full(database: SQLite, package_ahriman: Package,
|
||||
"""
|
||||
must remove all changes for the repository
|
||||
"""
|
||||
database.changes_insert(package_ahriman.base, Changes("sha1", "change1"))
|
||||
database.changes_insert(package_python_schedule.base, Changes("sha3", "change3"))
|
||||
database.changes_insert(package_ahriman.base, Changes("sha2", "change2"),
|
||||
RepositoryId("i686", database._repository_id.name))
|
||||
changes2 = Changes("sha2", "change2", "pkgbuild2")
|
||||
database.changes_insert(package_ahriman.base, Changes("sha1", "change1", "pkgbuild1"))
|
||||
database.changes_insert(package_python_schedule.base, Changes("sha3", "change3", "pkgbuild3"))
|
||||
database.changes_insert(package_ahriman.base, changes2, RepositoryId("i686", database._repository_id.name))
|
||||
|
||||
database.changes_remove(None)
|
||||
assert database.changes_get(package_ahriman.base).changes is None
|
||||
assert database.changes_get(package_python_schedule.base).changes is None
|
||||
assert database.changes_get(
|
||||
package_ahriman.base, RepositoryId("i686", database._repository_id.name)).changes == "change2"
|
||||
assert database.changes_get(package_ahriman.base, RepositoryId("i686", database._repository_id.name)) == changes2
|
||||
|
||||
@@ -219,7 +219,7 @@ def test_process_build(executor: Executor, package_ahriman: Package, passwd: Any
|
||||
mocker.patch("ahriman.models.repository_paths.getpwuid", return_value=passwd)
|
||||
mocker.patch("ahriman.core.repository.executor.Executor.packages", return_value=[package_ahriman])
|
||||
changes_mock = mocker.patch("ahriman.core.status.local_client.LocalClient.package_changes_get",
|
||||
return_value=Changes("commit", "change"))
|
||||
return_value=Changes("commit", "change", "pkgbuild"))
|
||||
commit_sha_mock = mocker.patch("ahriman.core.status.local_client.LocalClient.package_changes_update")
|
||||
depends_on_mock = mocker.patch("ahriman.core.build_tools.package_archive.PackageArchive.depends_on",
|
||||
return_value=Dependencies())
|
||||
@@ -231,7 +231,7 @@ def test_process_build(executor: Executor, package_ahriman: Package, passwd: Any
|
||||
build_mock.assert_called_once_with(package_ahriman, pytest.helpers.anyvar(Path, strict=True), None, None)
|
||||
depends_on_mock.assert_called_once_with()
|
||||
dependencies_mock.assert_called_once_with(package_ahriman.base, Dependencies())
|
||||
commit_sha_mock.assert_called_once_with(package_ahriman.base, Changes("sha", "change"))
|
||||
commit_sha_mock.assert_called_once_with(package_ahriman.base, Changes("sha", "change", "pkgbuild"))
|
||||
|
||||
|
||||
def test_process_build_bump_pkgrel(executor: Executor, package_ahriman: Package, mocker: MockerFixture) -> None:
|
||||
|
||||
@@ -97,7 +97,7 @@ def test_package_changes(package_info: PackageInfo, package_ahriman: Package, mo
|
||||
"""
|
||||
changes = Changes("sha", "change")
|
||||
load_mock = mocker.patch("ahriman.core.build_tools.sources.Sources.load", return_value="sha2")
|
||||
changes_mock = mocker.patch("ahriman.core.build_tools.sources.Sources.changes", return_value=changes.changes)
|
||||
changes_mock = mocker.patch("ahriman.core.build_tools.sources.Sources.changes", return_value=changes)
|
||||
|
||||
assert package_info.package_changes(package_ahriman, changes.last_commit_sha) == changes
|
||||
load_mock.assert_called_once_with(pytest.helpers.anyvar(int), package_ahriman, [], package_info.paths)
|
||||
@@ -108,11 +108,10 @@ def test_package_changes_skip(package_info: PackageInfo, package_ahriman: Packag
|
||||
"""
|
||||
must skip loading package changes if no new commits
|
||||
"""
|
||||
changes = Changes("sha")
|
||||
mocker.patch("ahriman.core.build_tools.sources.Sources.load", return_value=changes.last_commit_sha)
|
||||
mocker.patch("ahriman.core.build_tools.sources.Sources.load", return_value="sha")
|
||||
changes_mock = mocker.patch("ahriman.core.build_tools.sources.Sources.changes")
|
||||
|
||||
assert package_info.package_changes(package_ahriman, changes.last_commit_sha) == changes
|
||||
assert package_info.package_changes(package_ahriman, "sha") is None
|
||||
changes_mock.assert_not_called()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user