mirror of
https://github.com/arcan1s/ahriman.git
synced 2025-04-24 15:27:17 +00:00
* Allow to use single web instance for any repository * some improvements * drop includes from user home directory, introduce new variables to docker The old solution didn't actually work as expected, because devtools configuration belongs to filesystem (as well as sudo one), so it was still required to run setup command. In order to handle additional repositories, the POSTSETUP and PRESETUP commands variables have been introduced. FAQ has been updated as well * raise 404 in case if repository is unknown
89 lines
2.9 KiB
Python
89 lines
2.9 KiB
Python
import argparse
|
|
import pytest
|
|
|
|
from pytest_mock import MockerFixture
|
|
|
|
from ahriman.application.handlers import Dump
|
|
from ahriman.core.configuration import Configuration
|
|
|
|
|
|
def _default_args(args: argparse.Namespace) -> argparse.Namespace:
|
|
"""
|
|
default arguments for these test cases
|
|
|
|
Args:
|
|
args(argparse.Namespace): command line arguments fixture
|
|
|
|
Returns:
|
|
argparse.Namespace: generated arguments for these test cases
|
|
"""
|
|
args.info = False
|
|
args.key = None
|
|
args.section = None
|
|
args.secure = True
|
|
return args
|
|
|
|
|
|
def test_run(args: argparse.Namespace, configuration: Configuration, mocker: MockerFixture) -> None:
|
|
"""
|
|
must run command
|
|
"""
|
|
args = _default_args(args)
|
|
print_mock = mocker.patch("ahriman.core.formatters.Printer.print")
|
|
application_mock = mocker.patch("ahriman.core.configuration.Configuration.dump",
|
|
return_value=configuration.dump())
|
|
|
|
_, repository_id = configuration.check_loaded()
|
|
Dump.run(args, repository_id, configuration, report=False)
|
|
application_mock.assert_called_once_with()
|
|
print_mock.assert_called()
|
|
|
|
|
|
def test_run_info(args: argparse.Namespace, configuration: Configuration, mocker: MockerFixture) -> None:
|
|
"""
|
|
must run command with info
|
|
"""
|
|
args = _default_args(args)
|
|
args.info = True
|
|
print_mock = mocker.patch("ahriman.core.formatters.Printer.print")
|
|
|
|
_, repository_id = configuration.check_loaded()
|
|
Dump.run(args, repository_id, configuration, report=False)
|
|
print_mock.assert_called()
|
|
|
|
|
|
def test_run_section(args: argparse.Namespace, configuration: Configuration, mocker: MockerFixture) -> None:
|
|
"""
|
|
must run command with filter by section
|
|
"""
|
|
args = _default_args(args)
|
|
args.section = "settings"
|
|
print_mock = mocker.patch("ahriman.core.formatters.Printer.print")
|
|
|
|
_, repository_id = configuration.check_loaded()
|
|
Dump.run(args, repository_id, configuration, report=False)
|
|
print_mock.assert_called_once_with(verbose=False, log_fn=pytest.helpers.anyvar(int), separator=" = ")
|
|
|
|
|
|
def test_run_section_key(args: argparse.Namespace, configuration: Configuration, mocker: MockerFixture) -> None:
|
|
"""
|
|
must run command with filter by section and key
|
|
"""
|
|
args = _default_args(args)
|
|
args.section = "settings"
|
|
args.key = "include"
|
|
print_mock = mocker.patch("ahriman.core.formatters.Printer.print")
|
|
application_mock = mocker.patch("ahriman.core.configuration.Configuration.dump")
|
|
|
|
_, repository_id = configuration.check_loaded()
|
|
Dump.run(args, repository_id, configuration, report=False)
|
|
application_mock.assert_not_called()
|
|
print_mock.assert_called_once_with(verbose=False, log_fn=pytest.helpers.anyvar(int), separator=": ")
|
|
|
|
|
|
def test_disallow_multi_architecture_run() -> None:
|
|
"""
|
|
must not allow multi architecture run
|
|
"""
|
|
assert not Dump.ALLOW_MULTI_ARCHITECTURE_RUN
|