import pytest
from obsapi.repoflags import RepoFlags
xml1 = """
Test project for obsapi unit tests
x86_64
x86_64
"""
xml2 = """
Example from Kernel Module Packages Manual
"""
flag_types = ['build', 'publish', 'useforbuild', 'debuginfo']
def test_repo_flags_default_type():
repo_flags = RepoFlags()
assert repo_flags.flag_type == 'build'
@pytest.mark.parametrize('flag_type', flag_types)
def test_repo_flags_flag_type(flag_type):
repo_flags = RepoFlags(flag_type)
assert repo_flags.flag_type == flag_type
assert repo_flags.root.tag == flag_type
def test_repo_flags_invalid_flag_type():
with pytest.raises(ValueError):
RepoFlags('invalid')
def test_repo_flags_pass_xml_without_flags():
repo_flags = RepoFlags(xml=xml1)
assert repo_flags.flag_type == 'build'
def test_repo_flags_pass_xml_with_flags():
repo_flags = RepoFlags(xml=xml2)
assert repo_flags.flag_type in flag_types
def test_repo_flags_xml_build_flags():
repo_flags = RepoFlags('build', xml=xml2)
assert repo_flags.flag_type == 'build'
for flag in repo_flags.flags:
if flag.setting == 'enable':
assert flag.repository == 'SLE_12_SP3'
assert flag.arch == 'x86_64'
if flag.setting == 'disable':
assert flag.repository is None
assert flag.arch is None
def test_repo_flags_xml_debuginfo_flags():
repo_flags = RepoFlags('debuginfo', xml=xml2)
assert repo_flags.flag_type == 'debuginfo'
for flag in repo_flags.flags:
if flag.setting == 'enable':
assert flag.repository is None
assert flag.arch is None
def test_repo_flags_xml_new_flags():
repo_flags = RepoFlags('publish', xml=xml2)
assert repo_flags.flag_type == 'publish'
assert len(list(repo_flags.flags)) == 0
params = [('useforbuild', 'SLE_15_SP1', 'x86_64'),
('publish', None, None),
('debuginfo', None, 'aarch64'),
('build', 'SLE_12_SP3', None)
]
@pytest.mark.parametrize('flag_type, repo, arch', params)
def test_repo_flags_enable(flag_type, repo, arch):
repoflags = RepoFlags(flag_type)
repoflags.enable(repo=repo, arch=arch)
for flag in repoflags.flags:
assert flag.setting == 'enable'
assert flag.repository == repo
assert flag.arch == arch
@pytest.mark.parametrize('flag_type, repo, arch', params)
def test_repo_flags_disable(flag_type, repo, arch):
repoflags = RepoFlags(flag_type)
repoflags.disable(repo=repo, arch=arch)
for flag in repoflags.flags:
assert flag.setting == 'disable'
assert flag.repository == repo
assert flag.arch == arch
def test_repo_flags_set_invalid():
repoflags = RepoFlags()
with pytest.raises(ValueError):
repoflags.set('invalid')