replace several store_true keys to booleanoptionalaction alternative (#74)

This commit is contained in:
2022-11-10 18:34:01 +03:00
committed by GitHub
parent e58ccdc8ad
commit 0eadef597a
120 changed files with 770 additions and 705 deletions

View File

@ -8,7 +8,7 @@ from unittest.mock import MagicMock
from ahriman.core.alpm.pacman import Pacman
from ahriman.core.alpm.remote import AUR
from ahriman.core.exceptions import InvalidPackageInfo
from ahriman.core.exceptions import PackageInfoError, UnknownPackageError
from ahriman.models.aur_package import AURPackage
@ -38,7 +38,7 @@ def test_parse_response_error(resource_path_root: Path) -> None:
must raise exception on invalid response
"""
response = (resource_path_root / "models" / "aur_error").read_text()
with pytest.raises(InvalidPackageInfo, match="Incorrect request type specified."):
with pytest.raises(PackageInfoError, match="Incorrect request type specified."):
AUR.parse_response(json.loads(response))
@ -46,7 +46,7 @@ def test_parse_response_unknown_error() -> None:
"""
must raise exception on invalid response with empty error message
"""
with pytest.raises(InvalidPackageInfo, match="Unknown API error"):
with pytest.raises(PackageInfoError, match="Unknown API error"):
AUR.parse_response({"type": "error"})
@ -142,6 +142,16 @@ def test_package_info(aur: AUR, aur_package_ahriman: AURPackage, pacman: Pacman,
request_mock.assert_called_once_with("info", aur_package_ahriman.name)
def test_package_info_not_found(aur: AUR, aur_package_ahriman: AURPackage, pacman: Pacman,
mocker: MockerFixture) -> None:
"""
must raise UnknownPackage exception in case if no package was found
"""
mocker.patch("ahriman.core.alpm.remote.AUR.make_request", return_value=[])
with pytest.raises(UnknownPackageError, match=aur_package_ahriman.name):
assert aur.package_info(aur_package_ahriman.name, pacman=pacman)
def test_package_search(aur: AUR, aur_package_ahriman: AURPackage, pacman: Pacman, mocker: MockerFixture) -> None:
"""
must make request for search

View File

@ -8,7 +8,7 @@ from unittest.mock import MagicMock
from ahriman.core.alpm.pacman import Pacman
from ahriman.core.alpm.remote import Official
from ahriman.core.exceptions import InvalidPackageInfo
from ahriman.core.exceptions import PackageInfoError, UnknownPackageError
from ahriman.models.aur_package import AURPackage
@ -38,7 +38,7 @@ def test_parse_response_unknown_error(resource_path_root: Path) -> None:
must raise exception on invalid response with empty error message
"""
response = (resource_path_root / "models" / "official_error").read_text()
with pytest.raises(InvalidPackageInfo, match="API validation error"):
with pytest.raises(PackageInfoError, match="API validation error"):
Official.parse_response(json.loads(response))
@ -119,6 +119,16 @@ def test_package_info(official: Official, aur_package_akonadi: AURPackage, pacma
request_mock.assert_called_once_with(aur_package_akonadi.name, by="name")
def test_package_info_not_found(official: Official, aur_package_ahriman: AURPackage, pacman: Pacman,
mocker: MockerFixture) -> None:
"""
must raise UnknownPackage exception in case if no package was found
"""
mocker.patch("ahriman.core.alpm.remote.Official.make_request", return_value=[])
with pytest.raises(UnknownPackageError, match=aur_package_ahriman.name):
assert official.package_info(aur_package_ahriman.name, pacman=pacman)
def test_package_search(official: Official, aur_package_akonadi: AURPackage, pacman: Pacman,
mocker: MockerFixture) -> None:
"""

View File

@ -1,12 +1,15 @@
import pytest
from pytest_mock import MockerFixture
from ahriman.core.alpm.pacman import Pacman
from ahriman.core.alpm.remote import OfficialSyncdb
from ahriman.core.exceptions import UnknownPackageError
from ahriman.models.aur_package import AURPackage
def test_package_info(official_syncdb: OfficialSyncdb, aur_package_akonadi: AURPackage,
pacman: Pacman, mocker: MockerFixture) -> None:
def test_package_info(official_syncdb: OfficialSyncdb, aur_package_akonadi: AURPackage, pacman: Pacman,
mocker: MockerFixture) -> None:
"""
must return package info from the database
"""
@ -16,3 +19,13 @@ def test_package_info(official_syncdb: OfficialSyncdb, aur_package_akonadi: AURP
package = official_syncdb.package_info(aur_package_akonadi.name, pacman=pacman)
get_mock.assert_called_once_with(aur_package_akonadi.name)
assert package == aur_package_akonadi
def test_package_info_not_found(official_syncdb: OfficialSyncdb, aur_package_akonadi: AURPackage, pacman: Pacman,
mocker: MockerFixture) -> None:
"""
must raise UnknownPackage exception in case if no package was found
"""
mocker.patch("ahriman.core.alpm.pacman.Pacman.package_get", return_value=[])
with pytest.raises(UnknownPackageError, match=aur_package_akonadi.name):
assert official_syncdb.package_info(aur_package_akonadi.name, pacman=pacman)

View File

@ -1,7 +1,7 @@
import pytest
from pytest_mock import MockerFixture
from unittest import mock
from unittest.mock import call as MockCall
from ahriman.core.alpm.pacman import Pacman
from ahriman.core.alpm.remote import Remote
@ -25,7 +25,7 @@ def test_multisearch(aur_package_ahriman: AURPackage, pacman: Pacman, mocker: Mo
search_mock = mocker.patch("ahriman.core.alpm.remote.Remote.search", return_value=[aur_package_ahriman])
assert Remote.multisearch(*terms, pacman=pacman) == [aur_package_ahriman]
search_mock.assert_has_calls([mock.call("ahriman", pacman=pacman), mock.call("cool", pacman=pacman)])
search_mock.assert_has_calls([MockCall("ahriman", pacman=pacman), MockCall("cool", pacman=pacman)])
def test_multisearch_empty(pacman: Pacman, mocker: MockerFixture) -> None:

View File

@ -4,7 +4,7 @@ import pytest
from pytest_mock import MockerFixture
from ahriman.core.auth import OAuth
from ahriman.core.exceptions import InvalidOption
from ahriman.core.exceptions import OptionError
def test_auth_control(oauth: OAuth) -> None:
@ -28,7 +28,7 @@ def test_get_provider_not_a_type() -> None:
"""
must raise an exception if attribute is not a type
"""
with pytest.raises(InvalidOption):
with pytest.raises(OptionError):
OAuth.get_provider("__version__")
@ -36,9 +36,9 @@ def test_get_provider_invalid_type() -> None:
"""
must raise an exception if attribute is not an OAuth2 client
"""
with pytest.raises(InvalidOption):
with pytest.raises(OptionError):
OAuth.get_provider("User")
with pytest.raises(InvalidOption):
with pytest.raises(OptionError):
OAuth.get_provider("OAuth1Client")

View File

@ -2,7 +2,7 @@ import pytest
from pathlib import Path
from pytest_mock import MockerFixture
from unittest import mock
from unittest.mock import call as MockCall
from ahriman.core.build_tools.sources import Sources
from ahriman.models.package import Package
@ -55,12 +55,12 @@ def test_fetch_existing(remote_source: RemoteSource, mocker: MockerFixture) -> N
local = Path("local")
Sources.fetch(local, remote_source)
check_output_mock.assert_has_calls([
mock.call("git", "fetch", "origin", remote_source.branch,
exception=None, cwd=local, logger=pytest.helpers.anyvar(int)),
mock.call("git", "checkout", "--force", remote_source.branch,
exception=None, cwd=local, logger=pytest.helpers.anyvar(int)),
mock.call("git", "reset", "--hard", f"origin/{remote_source.branch}",
exception=None, cwd=local, logger=pytest.helpers.anyvar(int))
MockCall("git", "fetch", "origin", remote_source.branch,
exception=None, cwd=local, logger=pytest.helpers.anyvar(int)),
MockCall("git", "checkout", "--force", remote_source.branch,
exception=None, cwd=local, logger=pytest.helpers.anyvar(int)),
MockCall("git", "reset", "--hard", f"origin/{remote_source.branch}",
exception=None, cwd=local, logger=pytest.helpers.anyvar(int))
])
move_mock.assert_called_once_with(local.resolve(), local)
@ -76,12 +76,12 @@ def test_fetch_new(remote_source: RemoteSource, mocker: MockerFixture) -> None:
local = Path("local")
Sources.fetch(local, remote_source)
check_output_mock.assert_has_calls([
mock.call("git", "clone", "--branch", remote_source.branch, "--single-branch",
remote_source.git_url, str(local), exception=None, cwd=local, logger=pytest.helpers.anyvar(int)),
mock.call("git", "checkout", "--force", remote_source.branch,
exception=None, cwd=local, logger=pytest.helpers.anyvar(int)),
mock.call("git", "reset", "--hard", f"origin/{remote_source.branch}",
exception=None, cwd=local, logger=pytest.helpers.anyvar(int))
MockCall("git", "clone", "--branch", remote_source.branch, "--single-branch",
remote_source.git_url, str(local), exception=None, cwd=local, logger=pytest.helpers.anyvar(int)),
MockCall("git", "checkout", "--force", remote_source.branch,
exception=None, cwd=local, logger=pytest.helpers.anyvar(int)),
MockCall("git", "reset", "--hard", f"origin/{remote_source.branch}",
exception=None, cwd=local, logger=pytest.helpers.anyvar(int))
])
move_mock.assert_called_once_with(local.resolve(), local)
@ -97,10 +97,10 @@ def test_fetch_new_without_remote(mocker: MockerFixture) -> None:
local = Path("local")
Sources.fetch(local, None)
check_output_mock.assert_has_calls([
mock.call("git", "checkout", "--force", Sources.DEFAULT_BRANCH,
exception=None, cwd=local, logger=pytest.helpers.anyvar(int)),
mock.call("git", "reset", "--hard", f"origin/{Sources.DEFAULT_BRANCH}",
exception=None, cwd=local, logger=pytest.helpers.anyvar(int))
MockCall("git", "checkout", "--force", Sources.DEFAULT_BRANCH,
exception=None, cwd=local, logger=pytest.helpers.anyvar(int)),
MockCall("git", "reset", "--hard", f"origin/{Sources.DEFAULT_BRANCH}",
exception=None, cwd=local, logger=pytest.helpers.anyvar(int))
])
move_mock.assert_called_once_with(local.resolve(), local)
@ -237,7 +237,7 @@ def test_add(sources: Sources, mocker: MockerFixture) -> None:
local = Path("local")
sources.add(local, "pattern1", "pattern2")
glob_mock.assert_has_calls([mock.call("pattern1"), mock.call("pattern2")])
glob_mock.assert_has_calls([MockCall("pattern1"), MockCall("pattern2")])
check_output_mock.assert_called_once_with(
"git", "add", "--intent-to-add", "1", "2", "1", "2",
exception=None, cwd=local, logger=pytest.helpers.anyvar(int))

View File

@ -2,7 +2,7 @@ import pytest
from pytest_mock import MockerFixture
from sqlite3 import Connection
from unittest import mock
from unittest.mock import call as MockCall
from ahriman.core.database.data import migrate_package_statuses
from ahriman.models.package import Package
@ -22,11 +22,11 @@ def test_migrate_package_statuses(connection: Connection, package_ahriman: Packa
migrate_package_statuses(connection, repository_paths)
connection.execute.assert_has_calls([
mock.call(pytest.helpers.anyvar(str, strict=True), pytest.helpers.anyvar(int)),
mock.call(pytest.helpers.anyvar(str, strict=True), pytest.helpers.anyvar(int)),
MockCall(pytest.helpers.anyvar(str, strict=True), pytest.helpers.anyvar(int)),
MockCall(pytest.helpers.anyvar(str, strict=True), pytest.helpers.anyvar(int)),
])
connection.executemany.assert_has_calls([
mock.call(pytest.helpers.anyvar(str, strict=True), pytest.helpers.anyvar(int)),
MockCall(pytest.helpers.anyvar(str, strict=True), pytest.helpers.anyvar(int)),
])

View File

@ -1,7 +1,7 @@
import pytest
from sqlite3 import Connection
from unittest import mock
from unittest.mock import call as MockCall
from ahriman.core.configuration import Configuration
from ahriman.core.database.data import migrate_users_data
@ -16,6 +16,6 @@ def test_migrate_users_data(connection: Connection, configuration: Configuration
migrate_users_data(connection, configuration)
connection.execute.assert_has_calls([
mock.call(pytest.helpers.anyvar(str, strict=True), pytest.helpers.anyvar(int)),
mock.call(pytest.helpers.anyvar(str, strict=True), pytest.helpers.anyvar(int)),
MockCall(pytest.helpers.anyvar(str, strict=True), pytest.helpers.anyvar(int)),
MockCall(pytest.helpers.anyvar(str, strict=True), pytest.helpers.anyvar(int)),
])

View File

@ -2,8 +2,7 @@ import pytest
from pytest_mock import MockerFixture
from sqlite3 import Connection
from unittest import mock
from unittest.mock import MagicMock
from unittest.mock import MagicMock, call as MockCall
from ahriman.core.configuration import Configuration
from ahriman.core.database.migrations import Migrations
@ -52,10 +51,10 @@ def test_run(migrations: Migrations, mocker: MockerFixture) -> None:
migrations.run()
validate_mock.assert_called_once_with()
cursor.execute.assert_has_calls([
mock.call("begin exclusive"),
mock.call("select 1"),
mock.call("pragma user_version = 1"),
mock.call("commit"),
MockCall("begin exclusive"),
MockCall("select 1"),
MockCall("pragma user_version = 1"),
MockCall("commit"),
])
cursor.close.assert_called_once_with()
migrate_data_mock.assert_called_once_with(
@ -77,8 +76,8 @@ def test_run_migration_exception(migrations: Migrations, mocker: MockerFixture)
with pytest.raises(Exception):
migrations.run()
cursor.execute.assert_has_calls([
mock.call("begin exclusive"),
mock.call("rollback"),
MockCall("begin exclusive"),
MockCall("rollback"),
])
cursor.close.assert_called_once_with()

View File

@ -2,7 +2,7 @@ import pytest
from pytest_mock import MockerFixture
from sqlite3 import Connection
from unittest import mock
from unittest.mock import call as MockCall
from ahriman.core.database import SQLite
from ahriman.models.build_status import BuildStatus, BuildStatusEnum
@ -17,8 +17,8 @@ def test_package_remove_package_base(database: SQLite, connection: Connection) -
"""
database._package_remove_package_base(connection, "package")
connection.execute.assert_has_calls([
mock.call(pytest.helpers.anyvar(str, strict=True), {"package_base": "package"}),
mock.call(pytest.helpers.anyvar(str, strict=True), {"package_base": "package"}),
MockCall(pytest.helpers.anyvar(str, strict=True), {"package_base": "package"}),
MockCall(pytest.helpers.anyvar(str, strict=True), {"package_base": "package"}),
])

View File

@ -2,10 +2,10 @@ import pytest
from pathlib import Path
from pytest_mock import MockerFixture
from unittest import mock
from unittest.mock import call as MockCall
from ahriman.core.configuration import Configuration
from ahriman.core.exceptions import GitRemoteFailed
from ahriman.core.exceptions import GitRemoteError
from ahriman.core.gitremote.remote_pull import RemotePull
@ -39,12 +39,12 @@ def test_repo_copy(configuration: Configuration, mocker: MockerFixture) -> None:
runner.repo_copy(Path("local"))
copytree_mock.assert_has_calls([
mock.call(Path("local") / "package1", configuration.repository_paths.cache_for("package1"), dirs_exist_ok=True),
mock.call(Path("local") / "package3", configuration.repository_paths.cache_for("package3"), dirs_exist_ok=True),
MockCall(Path("local") / "package1", configuration.repository_paths.cache_for("package1"), dirs_exist_ok=True),
MockCall(Path("local") / "package3", configuration.repository_paths.cache_for("package3"), dirs_exist_ok=True),
])
init_mock.assert_has_calls([
mock.call(configuration.repository_paths.cache_for("package1")),
mock.call(configuration.repository_paths.cache_for("package3")),
MockCall(configuration.repository_paths.cache_for("package1")),
MockCall(configuration.repository_paths.cache_for("package3")),
])
@ -66,5 +66,5 @@ def test_run_failed(configuration: Configuration, mocker: MockerFixture) -> None
mocker.patch("ahriman.core.gitremote.remote_pull.RemotePull.repo_clone", side_effect=Exception())
runner = RemotePull(configuration, "gitremote")
with pytest.raises(GitRemoteFailed):
with pytest.raises(GitRemoteError):
runner.run()

View File

@ -2,10 +2,10 @@ import pytest
from pathlib import Path
from pytest_mock import MockerFixture
from unittest import mock
from unittest.mock import call as MockCall
from ahriman.core.configuration import Configuration
from ahriman.core.exceptions import GitRemoteFailed
from ahriman.core.exceptions import GitRemoteError
from ahriman.core.gitremote.remote_push import RemotePush
from ahriman.models.package import Package
from ahriman.models.result import Result
@ -22,9 +22,9 @@ def test_package_update(package_ahriman: Package, mocker: MockerFixture) -> None
local = Path("local")
RemotePush.package_update(package_ahriman, local)
rmtree_mock.assert_has_calls([
mock.call(local / package_ahriman.base, ignore_errors=True),
mock.call(pytest.helpers.anyvar(int), onerror=pytest.helpers.anyvar(int)), # removal of the TemporaryDirectory
mock.call(local / package_ahriman.base / ".git", ignore_errors=True),
MockCall(local / package_ahriman.base, ignore_errors=True),
MockCall(pytest.helpers.anyvar(int), onerror=pytest.helpers.anyvar(int)), # removal of the TemporaryDirectory
MockCall(local / package_ahriman.base / ".git", ignore_errors=True),
])
fetch_mock.assert_called_once_with(pytest.helpers.anyvar(int), package_ahriman.remote)
copytree_mock.assert_called_once_with(pytest.helpers.anyvar(int), local / package_ahriman.base)
@ -63,5 +63,5 @@ def test_run_failed(configuration: Configuration, result: Result, mocker: Mocker
mocker.patch("ahriman.core.build_tools.sources.Sources.fetch", side_effect=Exception())
runner = RemotePush(configuration, "gitremote")
with pytest.raises(GitRemoteFailed):
with pytest.raises(GitRemoteError):
runner.run(result)

View File

@ -1,5 +1,5 @@
from pytest_mock import MockerFixture
from unittest import mock
from unittest.mock import call as MockCall
from ahriman.core.configuration import Configuration
from ahriman.core.report.console import Console
@ -17,4 +17,4 @@ def test_generate(configuration: Configuration, result: Result, package_python_s
report = Console("x86_64", configuration, "console")
report.generate([], result)
print_mock.assert_has_calls([mock.call(verbose=True), mock.call(verbose=True)])
print_mock.assert_has_calls([MockCall(verbose=True), MockCall(verbose=True)])

View File

@ -3,7 +3,7 @@ import pytest
from pytest_mock import MockerFixture
from ahriman.core.configuration import Configuration
from ahriman.core.exceptions import ReportFailed
from ahriman.core.exceptions import ReportError
from ahriman.core.report.report import Report
from ahriman.models.report_settings import ReportSettings
from ahriman.models.result import Result
@ -14,7 +14,7 @@ def test_report_failure(configuration: Configuration, mocker: MockerFixture) ->
must raise ReportFailed on errors
"""
mocker.patch("ahriman.core.report.html.HTML.generate", side_effect=Exception())
with pytest.raises(ReportFailed):
with pytest.raises(ReportError):
Report.load("x86_64", configuration, "html").run(Result(), [])

View File

@ -2,7 +2,7 @@ import pytest
import requests
from pytest_mock import MockerFixture
from unittest import mock
from unittest.mock import call as MockCall
from ahriman.core.configuration import Configuration
from ahriman.core.report.telegram import Telegram
@ -81,7 +81,7 @@ def test_generate_big_text(configuration: Configuration, package_ahriman: Packag
report = Telegram("x86_64", configuration, "telegram")
report.generate([package_ahriman], result)
send_mock.assert_has_calls([
mock.call(pytest.helpers.anyvar(str, strict=True)), mock.call(pytest.helpers.anyvar(str, strict=True))
MockCall(pytest.helpers.anyvar(str, strict=True)), MockCall(pytest.helpers.anyvar(str, strict=True))
])
@ -96,9 +96,9 @@ def test_generate_very_big_text(configuration: Configuration, package_ahriman: P
report = Telegram("x86_64", configuration, "telegram")
report.generate([package_ahriman], result)
send_mock.assert_has_calls([
mock.call(pytest.helpers.anyvar(str, strict=True)),
mock.call(pytest.helpers.anyvar(str, strict=True)),
mock.call(pytest.helpers.anyvar(str, strict=True)),
MockCall(pytest.helpers.anyvar(str, strict=True)),
MockCall(pytest.helpers.anyvar(str, strict=True)),
MockCall(pytest.helpers.anyvar(str, strict=True)),
])

View File

@ -24,7 +24,7 @@ def cleaner(configuration: Configuration, database: SQLite, mocker: MockerFixtur
Cleaner: cleaner test instance
"""
mocker.patch("ahriman.models.repository_paths.RepositoryPaths.tree_create")
return Cleaner("x86_64", configuration, database, no_report=True, unsafe=False)
return Cleaner("x86_64", configuration, database, report=False, unsafe=False)
@pytest.fixture
@ -45,7 +45,7 @@ def executor(configuration: Configuration, database: SQLite, mocker: MockerFixtu
mocker.patch("ahriman.core.repository.cleaner.Cleaner.clear_packages")
mocker.patch("ahriman.core.repository.cleaner.Cleaner.clear_queue")
mocker.patch("ahriman.models.repository_paths.RepositoryPaths.tree_create")
return Executor("x86_64", configuration, database, no_report=True, unsafe=False)
return Executor("x86_64", configuration, database, report=False, unsafe=False)
@pytest.fixture
@ -62,7 +62,7 @@ def repository(configuration: Configuration, database: SQLite, mocker: MockerFix
Repository: repository test instance
"""
mocker.patch("ahriman.models.repository_paths.RepositoryPaths.tree_create")
return Repository("x86_64", configuration, database, no_report=True, unsafe=False)
return Repository("x86_64", configuration, database, report=False, unsafe=False)
@pytest.fixture
@ -83,4 +83,4 @@ def update_handler(configuration: Configuration, database: SQLite, mocker: Mocke
mocker.patch("ahriman.core.repository.cleaner.Cleaner.clear_packages")
mocker.patch("ahriman.core.repository.cleaner.Cleaner.clear_queue")
mocker.patch("ahriman.models.repository_paths.RepositoryPaths.tree_create")
return UpdateHandler("x86_64", configuration, database, no_report=True, unsafe=False)
return UpdateHandler("x86_64", configuration, database, report=False, unsafe=False)

View File

@ -3,7 +3,7 @@ import shutil
from pathlib import Path
from pytest_mock import MockerFixture
from unittest import mock
from unittest.mock import call as MockCall
from ahriman.core.repository.cleaner import Cleaner
@ -24,9 +24,9 @@ def _mock_clear_check() -> None:
mocker helper for clear tests
"""
shutil.rmtree.assert_has_calls([
mock.call(Path("a")),
mock.call(Path("b")),
mock.call(Path("c"))
MockCall(Path("a")),
MockCall(Path("b")),
MockCall(Path("c"))
])
@ -65,7 +65,16 @@ def test_clear_packages(cleaner: Cleaner, mocker: MockerFixture) -> None:
mocker.patch("pathlib.Path.unlink")
cleaner.clear_packages()
Path.unlink.assert_has_calls([mock.call(), mock.call(), mock.call()])
Path.unlink.assert_has_calls([MockCall(), MockCall(), MockCall()])
def test_clear_pacman(cleaner: Cleaner, mocker: MockerFixture) -> None:
"""
must delete built packages
"""
_mock_clear(mocker)
cleaner.clear_pacman()
_mock_clear_check()
def test_clear_queue(cleaner: Cleaner, mocker: MockerFixture) -> None:

View File

@ -2,7 +2,7 @@ import pytest
from pathlib import Path
from pytest_mock import MockerFixture
from unittest import mock
from unittest.mock import call as MockCall
from ahriman.core.repository.executor import Executor
from ahriman.models.package import Package
@ -88,7 +88,7 @@ def test_process_remove_base_multiple(executor: Executor, package_python_schedul
executor.process_remove([package_python_schedule.base])
# must remove via alpm wrapper
repo_remove_mock.assert_has_calls([
mock.call(package, props.filepath)
MockCall(package, props.filepath)
for package, props in package_python_schedule.packages.items()
], any_order=True)
# must update status
@ -186,7 +186,7 @@ def test_process_update_group(executor: Executor, package_python_schedule: Packa
executor.process_update([package.filepath for package in package_python_schedule.packages.values()])
repo_add_mock.assert_has_calls([
mock.call(executor.paths.repository / package.filepath)
MockCall(executor.paths.repository / package.filepath)
for package in package_python_schedule.packages.values()
], any_order=True)
status_client_mock.assert_called_once_with(package_python_schedule)
@ -208,8 +208,8 @@ def test_process_update_unsafe(executor: Executor, package_ahriman: Package, moc
executor.process_update([Path(path)])
move_mock.assert_has_calls([
mock.call(executor.paths.packages / path, executor.paths.packages / safe_path),
mock.call(executor.paths.packages / safe_path, executor.paths.repository / safe_path)
MockCall(executor.paths.packages / path, executor.paths.packages / safe_path),
MockCall(executor.paths.packages / safe_path, executor.paths.repository / safe_path)
])
repo_add_mock.assert_called_once_with(executor.paths.repository / safe_path)

View File

@ -2,7 +2,7 @@ from pytest_mock import MockerFixture
from ahriman.core.configuration import Configuration
from ahriman.core.database import SQLite
from ahriman.core.exceptions import UnsafeRun
from ahriman.core.exceptions import UnsafeRunError
from ahriman.core.repository.repository_properties import RepositoryProperties
from ahriman.core.status.web_client import WebClient
@ -13,7 +13,7 @@ def test_create_tree_on_load(configuration: Configuration, database: SQLite, moc
"""
mocker.patch("ahriman.core.repository.repository_properties.check_user")
tree_create_mock = mocker.patch("ahriman.models.repository_paths.RepositoryPaths.tree_create")
RepositoryProperties("x86_64", configuration, database, True, False)
RepositoryProperties("x86_64", configuration, database, report=False, unsafe=False)
tree_create_mock.assert_called_once_with()
@ -22,9 +22,9 @@ def test_create_tree_on_load_unsafe(configuration: Configuration, database: SQLi
"""
must not create tree on load in case if user differs from the root owner
"""
mocker.patch("ahriman.core.repository.repository_properties.check_user", side_effect=UnsafeRun(0, 1))
mocker.patch("ahriman.core.repository.repository_properties.check_user", side_effect=UnsafeRunError(0, 1))
tree_create_mock = mocker.patch("ahriman.models.repository_paths.RepositoryPaths.tree_create")
RepositoryProperties("x86_64", configuration, database, True, False)
RepositoryProperties("x86_64", configuration, database, report=False, unsafe=False)
tree_create_mock.assert_not_called()
@ -35,7 +35,7 @@ def test_create_dummy_report_client(configuration: Configuration, database: SQLi
"""
mocker.patch("ahriman.models.repository_paths.RepositoryPaths.tree_create")
load_mock = mocker.patch("ahriman.core.status.client.Client.load")
properties = RepositoryProperties("x86_64", configuration, database, True, False)
properties = RepositoryProperties("x86_64", configuration, database, report=False, unsafe=False)
load_mock.assert_not_called()
assert not isinstance(properties.reporter, WebClient)
@ -47,6 +47,6 @@ def test_create_full_report_client(configuration: Configuration, database: SQLit
"""
mocker.patch("ahriman.models.repository_paths.RepositoryPaths.tree_create")
load_mock = mocker.patch("ahriman.core.status.client.Client.load")
RepositoryProperties("x86_64", configuration, database, False, False)
RepositoryProperties("x86_64", configuration, database, report=True, unsafe=True)
load_mock.assert_called_once_with(configuration)

View File

@ -26,7 +26,7 @@ def test_updates_aur(update_handler: UpdateHandler, package_ahriman: Package,
mocker.patch("ahriman.models.package.Package.from_aur", return_value=package_ahriman)
status_client_mock = mocker.patch("ahriman.core.status.client.Client.set_pending")
assert update_handler.updates_aur([], False) == [package_ahriman]
assert update_handler.updates_aur([], vcs=True) == [package_ahriman]
status_client_mock.assert_called_once_with(package_ahriman.base)
@ -41,7 +41,7 @@ def test_updates_aur_official(update_handler: UpdateHandler, package_ahriman: Pa
mocker.patch("ahriman.models.package.Package.from_official", return_value=package_ahriman)
status_client_mock = mocker.patch("ahriman.core.status.client.Client.set_pending")
assert update_handler.updates_aur([], False) == [package_ahriman]
assert update_handler.updates_aur([], vcs=True) == [package_ahriman]
status_client_mock.assert_called_once_with(package_ahriman.base)
@ -54,7 +54,7 @@ def test_updates_aur_failed(update_handler: UpdateHandler, package_ahriman: Pack
mocker.patch("ahriman.models.package.Package.from_aur", side_effect=Exception())
status_client_mock = mocker.patch("ahriman.core.status.client.Client.set_failed")
update_handler.updates_aur([], False)
update_handler.updates_aur([], vcs=True)
status_client_mock.assert_called_once_with(package_ahriman.base)
@ -68,7 +68,7 @@ def test_updates_aur_filter(update_handler: UpdateHandler, package_ahriman: Pack
mocker.patch("ahriman.models.package.Package.is_outdated", return_value=True)
package_load_mock = mocker.patch("ahriman.models.package.Package.from_aur", return_value=package_ahriman)
assert update_handler.updates_aur([package_ahriman.base], False) == [package_ahriman]
assert update_handler.updates_aur([package_ahriman.base], vcs=True) == [package_ahriman]
package_load_mock.assert_called_once_with(package_ahriman.base, update_handler.pacman)
@ -81,7 +81,7 @@ def test_updates_aur_ignore(update_handler: UpdateHandler, package_ahriman: Pack
mocker.patch("ahriman.core.repository.update_handler.UpdateHandler.packages", return_value=[package_ahriman])
package_load_mock = mocker.patch("ahriman.models.package.Package.from_aur")
update_handler.updates_aur([], False)
update_handler.updates_aur([], vcs=True)
package_load_mock.assert_not_called()
@ -94,7 +94,7 @@ def test_updates_aur_ignore_vcs(update_handler: UpdateHandler, package_ahriman:
mocker.patch("ahriman.models.package.Package.is_vcs", return_value=True)
package_is_outdated_mock = mocker.patch("ahriman.models.package.Package.is_outdated")
update_handler.updates_aur([], True)
update_handler.updates_aur([], vcs=False)
package_is_outdated_mock.assert_not_called()

View File

@ -4,7 +4,7 @@ from pytest_mock import MockerFixture
from ahriman.core.configuration import Configuration
from ahriman.core.database import SQLite
from ahriman.core.exceptions import UnknownPackage
from ahriman.core.exceptions import UnknownPackageError
from ahriman.core.status.watcher import Watcher
from ahriman.core.status.web_client import WebClient
from ahriman.models.build_status import BuildStatus, BuildStatusEnum
@ -39,7 +39,7 @@ def test_get_failed(watcher: Watcher, package_ahriman: Package) -> None:
"""
must fail on unknown package
"""
with pytest.raises(UnknownPackage):
with pytest.raises(UnknownPackageError):
watcher.get(package_ahriman.base)
@ -124,7 +124,7 @@ def test_update_unknown(watcher: Watcher, package_ahriman: Package) -> None:
"""
must fail on unknown package status update only
"""
with pytest.raises(UnknownPackage):
with pytest.raises(UnknownPackageError):
watcher.update(package_ahriman.base, BuildStatusEnum.Unknown, None)

View File

@ -4,10 +4,10 @@ import pytest
from pathlib import Path
from pytest_mock import MockerFixture
from unittest import mock
from unittest.mock import call as MockCall
from ahriman.core.configuration import Configuration
from ahriman.core.exceptions import InitializeException
from ahriman.core.exceptions import InitializeError
from ahriman.models.repository_paths import RepositoryPaths
@ -62,7 +62,7 @@ def test_check_loaded_path(configuration: Configuration) -> None:
must raise exception if path is none
"""
configuration.path = None
with pytest.raises(InitializeException):
with pytest.raises(InitializeError):
configuration.check_loaded()
@ -71,7 +71,7 @@ def test_check_loaded_architecture(configuration: Configuration) -> None:
must raise exception if architecture is none
"""
configuration.architecture = None
with pytest.raises(InitializeException):
with pytest.raises(InitializeError):
configuration.check_loaded()
@ -312,7 +312,7 @@ def test_reload_clear(configuration: Configuration, mocker: MockerFixture) -> No
sections = configuration.sections()
configuration.reload()
clear_mock.assert_has_calls([mock.call(section) for section in sections])
clear_mock.assert_has_calls([MockCall(section) for section in sections])
def test_reload_no_architecture(configuration: Configuration) -> None:
@ -320,7 +320,7 @@ def test_reload_no_architecture(configuration: Configuration) -> None:
must raise exception on reload if no architecture set
"""
configuration.architecture = None
with pytest.raises(InitializeException):
with pytest.raises(InitializeError):
configuration.reload()
@ -329,7 +329,7 @@ def test_reload_no_path(configuration: Configuration) -> None:
must raise exception on reload if no path set
"""
configuration.path = None
with pytest.raises(InitializeException):
with pytest.raises(InitializeError):
configuration.reload()

View File

@ -8,7 +8,7 @@ from pathlib import Path
from pytest_mock import MockerFixture
from unittest.mock import MagicMock
from ahriman.core.exceptions import BuildFailed, InvalidOption, UnsafeRun
from ahriman.core.exceptions import BuildError, OptionError, UnsafeRunError
from ahriman.core.util import check_output, check_user, exception_response_text, filter_json, full_version, \
enum_values, package_like, pretty_datetime, pretty_size, safe_filename, walk
from ahriman.models.package import Package
@ -93,12 +93,12 @@ def test_check_output_failure_exception(mocker: MockerFixture) -> None:
must raise exception provided instead of default
"""
mocker.patch("subprocess.Popen.wait", return_value=1)
exception = BuildFailed("")
exception = BuildError("")
with pytest.raises(BuildFailed):
with pytest.raises(BuildError):
check_output("echo", "hello", exception=exception)
with pytest.raises(BuildFailed):
with pytest.raises(BuildError):
check_output("echo", "hello", exception=exception, logger=logging.getLogger(""))
@ -108,7 +108,7 @@ def test_check_user(mocker: MockerFixture) -> None:
"""
paths = RepositoryPaths(Path.cwd(), "x86_64")
mocker.patch("os.getuid", return_value=paths.root_owner[0])
check_user(paths, False)
check_user(paths, unsafe=False)
def test_check_user_no_directory(repository_paths: RepositoryPaths, mocker: MockerFixture) -> None:
@ -116,7 +116,7 @@ def test_check_user_no_directory(repository_paths: RepositoryPaths, mocker: Mock
must not fail in case if no directory found
"""
mocker.patch("pathlib.Path.exists", return_value=False)
check_user(repository_paths, False)
check_user(repository_paths, unsafe=False)
def test_check_user_exception(mocker: MockerFixture) -> None:
@ -126,8 +126,17 @@ def test_check_user_exception(mocker: MockerFixture) -> None:
paths = RepositoryPaths(Path.cwd(), "x86_64")
mocker.patch("os.getuid", return_value=paths.root_owner[0] + 1)
with pytest.raises(UnsafeRun):
check_user(paths, False)
with pytest.raises(UnsafeRunError):
check_user(paths, unsafe=False)
def test_check_user_unsafe(mocker: MockerFixture) -> None:
"""
must skip check if unsafe flag is set
"""
paths = RepositoryPaths(Path.cwd(), "x86_64")
mocker.patch("os.getuid", return_value=paths.root_owner[0] + 1)
check_user(paths, unsafe=True)
def test_exception_response_text() -> None:
@ -149,15 +158,6 @@ def test_exception_response_text_empty() -> None:
assert exception_response_text(exception) == ""
def test_check_unsafe(mocker: MockerFixture) -> None:
"""
must skip check if unsafe flag is set
"""
paths = RepositoryPaths(Path.cwd(), "x86_64")
mocker.patch("os.getuid", return_value=paths.root_owner[0] + 1)
check_user(paths, True)
def test_filter_json(package_ahriman: Package) -> None:
"""
must filter fields by known list
@ -283,7 +283,7 @@ def test_pretty_size_pbytes_failure() -> None:
"""
must raise exception if level >= 4 supplied
"""
with pytest.raises(InvalidOption):
with pytest.raises(OptionError):
pretty_size(42 * 1024 * 1024 * 1024 * 1024, 4).split()

View File

@ -4,7 +4,7 @@ from pathlib import Path
from pytest_mock import MockerFixture
from ahriman.core.configuration import Configuration
from ahriman.core.exceptions import InvalidExtension
from ahriman.core.exceptions import ExtensionError
from ahriman.core.triggers import TriggerLoader
from ahriman.models.package import Package
from ahriman.models.result import Result
@ -22,7 +22,7 @@ def test_load_trigger_package_invalid_import(trigger_loader: TriggerLoader, mock
must raise InvalidExtension on invalid import
"""
mocker.patch("ahriman.core.triggers.trigger_loader.importlib.import_module", side_effect=ModuleNotFoundError())
with pytest.raises(InvalidExtension):
with pytest.raises(ExtensionError):
trigger_loader.load_trigger("random.module")
@ -30,7 +30,7 @@ def test_load_trigger_package_not_trigger(trigger_loader: TriggerLoader) -> None
"""
must raise InvalidExtension if imported module is not a type
"""
with pytest.raises(InvalidExtension):
with pytest.raises(ExtensionError):
trigger_loader.load_trigger("ahriman.core.util.check_output")
@ -39,7 +39,7 @@ def test_load_trigger_package_error_on_creation(trigger_loader: TriggerLoader, m
must raise InvalidException on trigger initialization if any exception is thrown
"""
mocker.patch("ahriman.core.triggers.trigger.Trigger.__init__", side_effect=Exception())
with pytest.raises(InvalidExtension):
with pytest.raises(ExtensionError):
trigger_loader.load_trigger("ahriman.core.report.ReportTrigger")
@ -47,7 +47,7 @@ def test_load_trigger_package_is_not_trigger(trigger_loader: TriggerLoader) -> N
"""
must raise InvalidExtension if loaded class is not a trigger
"""
with pytest.raises(InvalidExtension):
with pytest.raises(ExtensionError):
trigger_loader.load_trigger("ahriman.core.sign.gpg.GPG")
@ -64,7 +64,7 @@ def test_load_trigger_path_directory(trigger_loader: TriggerLoader, resource_pat
must raise InvalidExtension if provided import path is directory
"""
path = resource_path_root.parent.parent / "src" / "ahriman" / "core" / "report"
with pytest.raises(InvalidExtension):
with pytest.raises(ExtensionError):
trigger_loader.load_trigger(f"{path}.ReportTrigger")
@ -72,7 +72,7 @@ def test_load_trigger_path_not_found(trigger_loader: TriggerLoader) -> None:
"""
must raise InvalidExtension if file cannot be found
"""
with pytest.raises(InvalidExtension):
with pytest.raises(ExtensionError):
trigger_loader.load_trigger("/some/random/path.py.SomeRandomModule")

View File

@ -4,7 +4,7 @@ import requests
from pathlib import Path
from pytest_mock import MockerFixture
from typing import Any, Dict
from unittest import mock
from unittest.mock import call as MockCall
from ahriman.core.upload.github import Github
@ -52,8 +52,8 @@ def test_asset_upload_with_removal(github: Github, github_release: Dict[str, Any
github.asset_upload(github_release, Path("asset_name"))
github.asset_upload(github_release, Path("/root/asset_name"))
remove_mock.assert_has_calls([
mock.call(github_release, "asset_name"),
mock.call(github_release, "asset_name"),
MockCall(github_release, "asset_name"),
MockCall(github_release, "asset_name"),
])
@ -105,8 +105,8 @@ def test_files_upload(github: Github, github_release: Dict[str, Any], mocker: Mo
upload_mock = mocker.patch("ahriman.core.upload.github.Github.asset_upload")
github.files_upload(github_release, {Path("a"): "a", Path("b"): "c", Path("c"): "c"}, {"a": "a", "b": "b"})
upload_mock.assert_has_calls([
mock.call(github_release, Path("b")),
mock.call(github_release, Path("c")),
MockCall(github_release, Path("b")),
MockCall(github_release, Path("c")),
])

View File

@ -1,8 +1,7 @@
from pathlib import Path
from pytest_mock import MockerFixture
from typing import Any, List, Optional, Tuple
from unittest import mock
from unittest.mock import MagicMock
from unittest.mock import MagicMock, call as MockCall
from ahriman.core.upload.s3 import S3
@ -67,11 +66,11 @@ def test_files_upload(s3: S3, s3_remote_objects: List[Any], mocker: MockerFixtur
s3.files_upload(root, local_files, remote_objects)
upload_mock.upload_file.assert_has_calls(
[
mock.call(
MockCall(
Filename=str(root / s3.architecture / "b"),
Key=f"{s3.architecture}/{s3.architecture}/b",
ExtraArgs={"ContentType": "text/html"}),
mock.call(
MockCall(
Filename=str(root / s3.architecture / "d"),
Key=f"{s3.architecture}/{s3.architecture}/d",
ExtraArgs=None),

View File

@ -4,7 +4,7 @@ from pathlib import Path
from pytest_mock import MockerFixture
from ahriman.core.configuration import Configuration
from ahriman.core.exceptions import SyncFailed
from ahriman.core.exceptions import SynchronizationError
from ahriman.core.upload.upload import Upload
from ahriman.models.upload_settings import UploadSettings
@ -14,7 +14,7 @@ def test_upload_failure(configuration: Configuration, mocker: MockerFixture) ->
must raise SyncFailed on errors
"""
mocker.patch("ahriman.core.upload.rsync.Rsync.sync", side_effect=Exception())
with pytest.raises(SyncFailed):
with pytest.raises(SynchronizationError):
Upload.load("x86_64", configuration, "rsync").run(Path("path"), [])