mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-07-09 20:15:47 +00:00
* add models tests (#1) also replace single quote to double one to confort PEP docstring + move _check_output to class properties to make it available for mocking * alpm tests implementation * try to replace os with pathlib * update tests for pathlib * fix includes glob and trim version from dependencies * build_tools package tests * repository component tests * add sign tests * complete status tests * handle exceptions in actual_version calls * complete core tests * move configuration to root conftest * application tests * complete application tests * change copyright to more generic one * base web tests * complete web tests * complete testkit also add argument parsers test
48 lines
1.4 KiB
Python
48 lines
1.4 KiB
Python
import pytest
|
|
|
|
from pathlib import Path
|
|
from pytest_mock import MockerFixture
|
|
|
|
from ahriman.core.alpm.repo import Repo
|
|
|
|
|
|
def test_repo_path(repo: Repo) -> None:
|
|
"""
|
|
name must be something like archive name
|
|
"""
|
|
assert repo.repo_path.name.endswith("db.tar.gz")
|
|
|
|
|
|
def test_repo_add(repo: Repo, mocker: MockerFixture) -> None:
|
|
"""
|
|
must call repo-add on package addition
|
|
"""
|
|
check_output_mock = mocker.patch("ahriman.core.alpm.repo.Repo._check_output")
|
|
|
|
repo.add(Path("path"))
|
|
check_output_mock.assert_called_once()
|
|
assert check_output_mock.call_args[0][0] == "repo-add"
|
|
|
|
|
|
def test_repo_remove(repo: Repo, mocker: MockerFixture) -> None:
|
|
"""
|
|
must call repo-remove on package addition
|
|
"""
|
|
mocker.patch("pathlib.Path.glob", return_value=[])
|
|
check_output_mock = mocker.patch("ahriman.core.alpm.repo.Repo._check_output")
|
|
|
|
repo.remove("package", Path("package.pkg.tar.xz"))
|
|
check_output_mock.assert_called_once()
|
|
assert check_output_mock.call_args[0][0] == "repo-remove"
|
|
|
|
|
|
def test_repo_remove_fail_no_file(repo: Repo, mocker: MockerFixture) -> None:
|
|
"""
|
|
must fail on missing file
|
|
"""
|
|
mocker.patch("pathlib.Path.glob", return_value=[Path("package.pkg.tar.xz")])
|
|
mocker.patch("pathlib.Path.unlink", side_effect=FileNotFoundError())
|
|
|
|
with pytest.raises(FileNotFoundError):
|
|
repo.remove("package", Path("package.pkg.tar.xz"))
|