archinstall/tests/test_args.py

172 lines
4.9 KiB
Python

from pathlib import Path
from pytest import MonkeyPatch
from archinstall.default_profiles.profile import GreeterType
from archinstall.lib.args import ArchConfig, ArchConfigHandler, Arguments
from archinstall.lib.disk import DiskLayoutConfiguration, DiskLayoutType
from archinstall.lib.hardware import GfxDriver
from archinstall.lib.locale import LocaleConfiguration
from archinstall.lib.mirrors import MirrorConfiguration
from archinstall.lib.models import Audio, AudioConfiguration, Bootloader, NetworkConfiguration, User
from archinstall.lib.models.network_configuration import Nic, NicType
from archinstall.lib.profile.profile_model import ProfileConfiguration
from archinstall.lib.profile.profiles_handler import profile_handler
from archinstall.lib.translationhandler import translation_handler
def test_default_args(monkeypatch):
monkeypatch.setattr('sys.argv', ['archinstall'])
handler = ArchConfigHandler()
args = handler.args
assert args == Arguments(
config=None,
config_url=None,
creds=None,
silent=False,
dry_run=False,
script='guided',
mount_point=Path('/mnt'),
skip_ntp=False,
debug=False,
offline=False,
no_pkg_lookups=False,
plugin=None,
skip_version_check=False,
advanced=False
)
def test_correct_parsing_args(
monkeypatch: MonkeyPatch,
config_fixture: Path,
creds_fixture: Path
) -> None:
monkeypatch.setattr('sys.argv', [
'archinstall',
'--config',
str(config_fixture),
'--config-url',
'https://example.com',
'--creds',
str(creds_fixture),
'--script',
'execution_script',
'--mount-point',
'/tmp',
'--skip-ntp',
'--debug',
'--offline',
'--no-pkg-lookups',
'--plugin',
'pytest_plugin.py',
'--skip-version-check',
'--advanced',
'--dry-run',
'--silent'
])
handler = ArchConfigHandler()
args = handler.args
assert args == Arguments(
config=config_fixture,
config_url='https://example.com',
creds=creds_fixture,
silent=True,
dry_run=True,
script='execution_script',
mount_point=Path('/tmp'),
skip_ntp=True,
debug=True,
offline=True,
no_pkg_lookups=True,
plugin='pytest_plugin.py',
skip_version_check=True,
advanced=True
)
def test_config_file_parsing(
monkeypatch: MonkeyPatch,
config_fixture: Path,
creds_fixture: Path
) -> None:
monkeypatch.setattr('sys.argv', [
'archinstall',
'--config',
str(config_fixture),
'--creds',
str(creds_fixture),
])
handler = ArchConfigHandler()
arch_config = handler.arch_config
assert arch_config == ArchConfig(
version='3.0.0',
locale_config=LocaleConfiguration(
kb_layout='us',
sys_lang='en_US',
sys_enc='UTF-8'
),
archinstall_language=translation_handler.get_language_by_abbr('en'),
disk_config=DiskLayoutConfiguration(
config_type=DiskLayoutType.Default,
device_modifications=[],
lvm_config=None,
mountpoint=None
),
profile_config=ProfileConfiguration(
profile=profile_handler.parse_profile_config({
"custom_settings": {
"Hyprland": {
"seat_access": "polkit"
},
"Sway": {
"seat_access": "seatd"
}
},
"details": [
"Sway",
"Hyprland"
],
"main": "Desktop"
}),
gfx_driver=GfxDriver.AllOpenSource,
greeter=GreeterType.Lightdm
),
mirror_config=MirrorConfiguration(
mirror_regions={},
custom_mirrors=[]
),
network_config=NetworkConfiguration(
type=NicType.MANUAL,
nics=[
Nic(
iface='eno1',
ip='192.168.1.15/24',
dhcp=True,
gateway='192.168.1.1',
dns=[
'192.168.1.1',
'9.9.9.9'
]
)
]
),
bootloader=Bootloader.Systemd,
uki=False,
audio_config=AudioConfiguration(Audio.Pipewire),
hostname='archy',
kernels=['linux-zen'],
ntp=True,
packages=["firefox"],
parallel_downloads=66,
swap=False,
timezone='UTC',
additional_repositories=["testing"],
_users=[User(username='user_name', password='user_pwd', sudo=True)],
_disk_encryption=None
)