084321dd97
- The ability is added - Also the generator includes only the latest by version packages to packages.json - The generator has key `--is-reference` for an each repo. This key marks a repo as reference. An reference repo is used as main source of packages. A not reference repo is used as source of packages which don't exist in the reference repos. - All cases are covered by the unittest @BS-NOBUILD @BS-TARGET-CL8 Change-Id: I2f80ba4fbfce27fb9a30500ae46c0b8a2f2aabcd
99 lines
2.7 KiB
Python
99 lines
2.7 KiB
Python
# coding=utf-8
|
|
|
|
import os
|
|
from collections import defaultdict
|
|
from unittest import TestCase, mock, main
|
|
|
|
from pungi.scripts.create_packages_json import PackagesGenerator, RepoInfo
|
|
|
|
FOLDER_WITH_TEST_DATA = os.path.join(
|
|
os.path.dirname(
|
|
os.path.abspath(__file__)
|
|
),
|
|
'data/test_create_packages_json/',
|
|
)
|
|
|
|
test_repo_info = RepoInfo(
|
|
path=FOLDER_WITH_TEST_DATA,
|
|
folder='test_repo',
|
|
name='TestRepo',
|
|
arch='x86_64',
|
|
is_remote=False,
|
|
is_reference=True,
|
|
)
|
|
|
|
test_repo_info_2 = RepoInfo(
|
|
path=FOLDER_WITH_TEST_DATA,
|
|
folder='test_repo_2',
|
|
name='TestRepo2',
|
|
arch='x86_64',
|
|
is_remote=False,
|
|
is_reference=True,
|
|
)
|
|
|
|
|
|
class TestPackagesJson(TestCase):
|
|
def test_01__get_remote_file_content(self):
|
|
"""
|
|
Test the getting of content from a remote file
|
|
"""
|
|
request_object = mock.Mock()
|
|
request_object.raise_for_status = lambda: True
|
|
request_object.content = b'TestContent'
|
|
with mock.patch(
|
|
'pungi.scripts.create_packages_json.requests.get',
|
|
return_value=request_object,
|
|
) as mock_requests_get, mock.patch(
|
|
'pungi.scripts.create_packages_json.tempfile.NamedTemporaryFile',
|
|
) as mock_tempfile:
|
|
mock_tempfile.return_value.__enter__.return_value.name = 'tmpfile'
|
|
file_name = PackagesGenerator._get_remote_file_content(
|
|
file_url='fakeurl'
|
|
)
|
|
mock_requests_get.assert_called_once_with(url='fakeurl')
|
|
mock_tempfile.assert_called_once_with(delete=False)
|
|
mock_tempfile.return_value.__enter__().\
|
|
write.assert_called_once_with(b'TestContent')
|
|
self.assertEqual(
|
|
file_name,
|
|
'tmpfile',
|
|
)
|
|
|
|
def test_02_generate_additional_packages(self):
|
|
pg = PackagesGenerator(
|
|
repos=[
|
|
test_repo_info,
|
|
test_repo_info_2,
|
|
],
|
|
excluded_packages=['zziplib-utils'],
|
|
included_packages=['389-ds-base-new*'],
|
|
)
|
|
test_packages = defaultdict(
|
|
lambda: defaultdict(
|
|
lambda: defaultdict(
|
|
list,
|
|
)
|
|
)
|
|
)
|
|
test_packages['TestRepo']['x86_64']['zziplib'] = \
|
|
[
|
|
'zziplib.x86_64',
|
|
]
|
|
test_packages['TestRepo2']['x86_64']['zziplib'] = \
|
|
[
|
|
'zziplib.i686',
|
|
]
|
|
test_packages['TestRepo2']['x86_64']['389-ds-base-new'] = \
|
|
[
|
|
'389-ds-base-new.x86_64',
|
|
]
|
|
result = pg.generate_packages_json()
|
|
self.assertEqual(
|
|
test_packages,
|
|
result,
|
|
)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|