You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
2.4 KiB
51 lines
2.4 KiB
9 months ago
|
import json
|
||
|
import os
|
||
|
|
||
|
from leapp.libraries.common import repofileutils
|
||
|
|
||
|
CUR_DIR = os.path.dirname(os.path.abspath(__file__))
|
||
|
|
||
|
|
||
|
def test_invert_dict():
|
||
|
input_dict = {1: ['a', 'b'], 2: ['b'], 3: []}
|
||
|
inv_dict = repofileutils._invert_dict(input_dict)
|
||
|
assert inv_dict == {'a': [1], 'b': [1, 2]}
|
||
|
|
||
|
|
||
|
def test_parse_repofile():
|
||
|
repofile = repofileutils.parse_repofile(os.path.join(CUR_DIR, 'sample_repos.txt'))
|
||
|
|
||
|
repo_appstream = [repo for repo in repofile.data if repo.repoid == 'AppStream'][0]
|
||
|
assert repo_appstream.name == 'CentOS-$releasever - AppStream'
|
||
|
assert repo_appstream.baseurl is None # comments shouldn't get parsed
|
||
|
assert repo_appstream.metalink is None
|
||
|
assert repo_appstream.mirrorlist == ('http://mirrorlist.centos.org/?release=$releasever'
|
||
|
'&arch=$basearch&repo=AppStream&infra=$infra')
|
||
|
assert repo_appstream.enabled is True
|
||
|
additional_appstream = json.loads(repo_appstream.additional_fields)
|
||
|
assert additional_appstream['gpgcheck'] == '1'
|
||
|
assert additional_appstream['gpgkey'] == 'file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial'
|
||
|
assert additional_appstream['cost'] == '77'
|
||
|
assert additional_appstream.get('baseurl') is None
|
||
|
|
||
|
repo_leapp = [repo for repo in repofile.data if repo.repoid == 'leapp-copr'][0]
|
||
|
assert repo_leapp.name == 'Copr repo for devel Leapp builds'
|
||
|
assert repo_leapp.baseurl == 'http://coprbe.devel.redhat.com/results/oam-group/leapp/rhel-7-x86_64/'
|
||
|
assert repo_leapp.metalink is None
|
||
|
assert repo_leapp.mirrorlist is None
|
||
|
assert repo_leapp.enabled is False
|
||
|
additional_leapp = json.loads(repo_leapp.additional_fields)
|
||
|
assert additional_leapp['type'] == 'rpm-md'
|
||
|
assert additional_leapp['skip_if_unavailable'] == 'True'
|
||
|
assert additional_leapp['gpgcheck'] == '0'
|
||
|
assert additional_leapp['gpgkey'] == 'http://coprbe.devel.redhat.com/results/oam-group/leapp/pubkey.gpg'
|
||
|
assert additional_leapp['repo_gpgcheck'] == '0'
|
||
|
assert additional_leapp['enabled_metadata'] == '1'
|
||
|
assert len(additional_leapp) == 6
|
||
|
|
||
|
assert len([repo for repo in repofile.data if repo.repoid == 'spe-ci_al.cha:rs']) == 1
|
||
|
|
||
|
repos_duplicate = [repo for repo in repofile.data if repo.repoid == 'duplicate']
|
||
|
assert len(repos_duplicate) == 1 # only one instance got through
|
||
|
assert repos_duplicate[0].name == 'Duplicate 2' # and it's the latter one
|