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')