mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-04-24 15:27:17 +00:00
feat: calculate and store changes for each update
This commit is contained in:
parent
9785835c0e
commit
a396126a79
12
.github/workflows/setup.sh
vendored
12
.github/workflows/setup.sh
vendored
@ -8,19 +8,19 @@ set -ex
|
|||||||
# install dependencies
|
# install dependencies
|
||||||
echo -e '[arcanisrepo]\nServer = https://repo.arcanis.me/$arch\nSigLevel = Never' | tee -a /etc/pacman.conf
|
echo -e '[arcanisrepo]\nServer = https://repo.arcanis.me/$arch\nSigLevel = Never' | tee -a /etc/pacman.conf
|
||||||
# refresh the image
|
# refresh the image
|
||||||
pacman -Syu --noconfirm
|
pacman -Syyu --noconfirm
|
||||||
# main dependencies
|
# main dependencies
|
||||||
pacman -Sy --noconfirm devtools git pyalpm python-inflection python-passlib python-pyelftools python-requests python-srcinfo python-systemd sudo
|
pacman -S --noconfirm devtools git pyalpm python-inflection python-passlib python-pyelftools python-requests python-srcinfo python-systemd sudo
|
||||||
# make dependencies
|
# make dependencies
|
||||||
pacman -Sy --noconfirm --asdeps base-devel python-build python-flit python-installer python-tox python-wheel
|
pacman -S --noconfirm --asdeps base-devel python-build python-flit python-installer python-tox python-wheel
|
||||||
# optional dependencies
|
# optional dependencies
|
||||||
if [[ -z $MINIMAL_INSTALL ]]; then
|
if [[ -z $MINIMAL_INSTALL ]]; then
|
||||||
# VCS support
|
# VCS support
|
||||||
pacman -Sy --noconfirm breezy darcs mercurial subversion
|
pacman -S --noconfirm breezy darcs mercurial subversion
|
||||||
# web server
|
# web server
|
||||||
pacman -Sy --noconfirm python-aioauth-client python-aiohttp python-aiohttp-apispec-git python-aiohttp-cors python-aiohttp-jinja2 python-aiohttp-security python-aiohttp-session python-cryptography python-jinja
|
pacman -S --noconfirm python-aioauth-client python-aiohttp python-aiohttp-apispec-git python-aiohttp-cors python-aiohttp-jinja2 python-aiohttp-security python-aiohttp-session python-cryptography python-jinja
|
||||||
# additional features
|
# additional features
|
||||||
pacman -Sy --noconfirm gnupg python-boto3 python-cerberus python-matplotlib rsync
|
pacman -S --noconfirm gnupg python-boto3 python-cerberus python-matplotlib rsync
|
||||||
fi
|
fi
|
||||||
# FIXME since 1.0.4 devtools requires dbus to be run, which doesn't work now in container
|
# FIXME since 1.0.4 devtools requires dbus to be run, which doesn't work now in container
|
||||||
cp "docker/systemd-nspawn.sh" "/usr/local/bin/systemd-nspawn"
|
cp "docker/systemd-nspawn.sh" "/usr/local/bin/systemd-nspawn"
|
||||||
|
2
.github/workflows/tests.sh
vendored
2
.github/workflows/tests.sh
vendored
@ -4,7 +4,7 @@
|
|||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
# install dependencies
|
# install dependencies
|
||||||
pacman --noconfirm -Syu base-devel python-tox
|
pacman --noconfirm -Syyu base-devel python-tox
|
||||||
|
|
||||||
# run test and check targets
|
# run test and check targets
|
||||||
tox
|
tox
|
||||||
|
@ -50,10 +50,10 @@ class Update(Handler):
|
|||||||
|
|
||||||
packages = application.updates(args.package, aur=args.aur, local=args.local, manual=args.manual, vcs=args.vcs,
|
packages = application.updates(args.package, aur=args.aur, local=args.local, manual=args.manual, vcs=args.vcs,
|
||||||
check_files=args.check_files)
|
check_files=args.check_files)
|
||||||
if args.dry_run: # some check specific actions
|
if args.changes: # generate changes if requested
|
||||||
if args.changes: # generate changes if requested
|
application.changes(packages)
|
||||||
application.changes(packages)
|
|
||||||
|
|
||||||
|
if args.dry_run: # exit from application if no build requested
|
||||||
Update.check_if_empty(args.exit_code, not packages) # status code check
|
Update.check_if_empty(args.exit_code, not packages) # status code check
|
||||||
return
|
return
|
||||||
|
|
||||||
|
@ -79,8 +79,9 @@ class Executor(PackageInfo, Cleaner):
|
|||||||
with self.in_event(single.base, EventType.PackageUpdated, failure=EventType.PackageUpdateFailed):
|
with self.in_event(single.base, EventType.PackageUpdated, failure=EventType.PackageUpdateFailed):
|
||||||
packager = self.packager(packagers, single.base)
|
packager = self.packager(packagers, single.base)
|
||||||
last_commit_sha = build_single(single, Path(dir_name), packager.packager_id)
|
last_commit_sha = build_single(single, Path(dir_name), packager.packager_id)
|
||||||
# clear changes and update commit hash
|
# update commit hash for changes keeping current diff if there is any
|
||||||
self.reporter.package_changes_update(single.base, Changes(last_commit_sha))
|
changes = self.reporter.package_changes_get(single.base)
|
||||||
|
self.reporter.package_changes_update(single.base, Changes(last_commit_sha, changes.changes))
|
||||||
# update dependencies list
|
# update dependencies list
|
||||||
package_archive = PackageArchive(self.paths.build_root, single, self.pacman, self.scan_paths)
|
package_archive = PackageArchive(self.paths.build_root, single, self.pacman, self.scan_paths)
|
||||||
dependencies = package_archive.depends_on()
|
dependencies = package_archive.depends_on()
|
||||||
|
@ -64,7 +64,7 @@ def test_run(args: argparse.Namespace, package_ahriman: Package, configuration:
|
|||||||
bump_pkgrel=args.increment)
|
bump_pkgrel=args.increment)
|
||||||
updates_mock.assert_called_once_with(
|
updates_mock.assert_called_once_with(
|
||||||
args.package, aur=args.aur, local=args.local, manual=args.manual, vcs=args.vcs, check_files=args.check_files)
|
args.package, aur=args.aur, local=args.local, manual=args.manual, vcs=args.vcs, check_files=args.check_files)
|
||||||
changes_mock.assert_not_called()
|
changes_mock.assert_called_once_with([package_ahriman])
|
||||||
dependencies_mock.assert_called_once_with([package_ahriman], process_dependencies=args.dependencies)
|
dependencies_mock.assert_called_once_with([package_ahriman], process_dependencies=args.dependencies)
|
||||||
check_mock.assert_called_once_with(False, False)
|
check_mock.assert_called_once_with(False, False)
|
||||||
on_start_mock.assert_called_once_with()
|
on_start_mock.assert_called_once_with()
|
||||||
@ -100,12 +100,11 @@ def test_run_update_empty_exception(args: argparse.Namespace, package_ahriman: P
|
|||||||
mocker.patch("ahriman.application.application.Application.updates", return_value=[package_ahriman])
|
mocker.patch("ahriman.application.application.Application.updates", return_value=[package_ahriman])
|
||||||
mocker.patch("ahriman.application.application.Application.with_dependencies", return_value=[package_ahriman])
|
mocker.patch("ahriman.application.application.Application.with_dependencies", return_value=[package_ahriman])
|
||||||
mocker.patch("ahriman.application.application.Application.print_updates")
|
mocker.patch("ahriman.application.application.Application.print_updates")
|
||||||
changes_mock = mocker.patch("ahriman.application.application.Application.changes")
|
mocker.patch("ahriman.application.application.Application.changes")
|
||||||
check_mock = mocker.patch("ahriman.application.handlers.Handler.check_if_empty")
|
check_mock = mocker.patch("ahriman.application.handlers.Handler.check_if_empty")
|
||||||
|
|
||||||
_, repository_id = configuration.check_loaded()
|
_, repository_id = configuration.check_loaded()
|
||||||
Update.run(args, repository_id, configuration, report=False)
|
Update.run(args, repository_id, configuration, report=False)
|
||||||
changes_mock.assert_not_called()
|
|
||||||
check_mock.assert_called_once_with(True, True)
|
check_mock.assert_called_once_with(True, True)
|
||||||
|
|
||||||
|
|
||||||
|
@ -23,6 +23,8 @@ def test_process_build(executor: Executor, package_ahriman: Package, passwd: Any
|
|||||||
init_mock = mocker.patch("ahriman.core.build_tools.task.Task.init", return_value="sha")
|
init_mock = mocker.patch("ahriman.core.build_tools.task.Task.init", return_value="sha")
|
||||||
move_mock = mocker.patch("shutil.move")
|
move_mock = mocker.patch("shutil.move")
|
||||||
status_client_mock = mocker.patch("ahriman.core.status.Client.set_building")
|
status_client_mock = mocker.patch("ahriman.core.status.Client.set_building")
|
||||||
|
changes_mock = mocker.patch("ahriman.core.status.local_client.LocalClient.package_changes_get",
|
||||||
|
return_value=Changes("commit", "change"))
|
||||||
commit_sha_mock = mocker.patch("ahriman.core.status.local_client.LocalClient.package_changes_update")
|
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",
|
depends_on_mock = mocker.patch("ahriman.core.build_tools.package_archive.PackageArchive.depends_on",
|
||||||
return_value=Dependencies())
|
return_value=Dependencies())
|
||||||
@ -36,7 +38,7 @@ def test_process_build(executor: Executor, package_ahriman: Package, passwd: Any
|
|||||||
move_mock.assert_called_once_with(Path(package_ahriman.base), executor.paths.packages / package_ahriman.base)
|
move_mock.assert_called_once_with(Path(package_ahriman.base), executor.paths.packages / package_ahriman.base)
|
||||||
# must update status
|
# must update status
|
||||||
status_client_mock.assert_called_once_with(package_ahriman.base)
|
status_client_mock.assert_called_once_with(package_ahriman.base)
|
||||||
commit_sha_mock.assert_called_once_with(package_ahriman.base, Changes("sha"))
|
commit_sha_mock.assert_called_once_with(package_ahriman.base, Changes("sha", "change"))
|
||||||
|
|
||||||
|
|
||||||
def test_process_build_bump_pkgrel(executor: Executor, package_ahriman: Package, mocker: MockerFixture) -> None:
|
def test_process_build_bump_pkgrel(executor: Executor, package_ahriman: Package, mocker: MockerFixture) -> None:
|
||||||
|
Loading…
Reference in New Issue
Block a user