113 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			3.0 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,
 | |
|     VariantInfo,
 | |
| )
 | |
| 
 | |
| 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',
 | |
|     is_remote=False,
 | |
|     is_reference=True,
 | |
| )
 | |
| 
 | |
| test_repo_info_2 = RepoInfo(
 | |
|     path=FOLDER_WITH_TEST_DATA,
 | |
|     folder='test_repo_2',
 | |
|     is_remote=False,
 | |
|     is_reference=True,
 | |
| )
 | |
| variant_info_1 = VariantInfo(
 | |
|     name='TestRepo',
 | |
|     arch='x86_64',
 | |
|     repos=[test_repo_info]
 | |
| )
 | |
| variant_info_2 = VariantInfo(
 | |
|     name='TestRepo2',
 | |
|     arch='x86_64',
 | |
|     repos=[test_repo_info_2]
 | |
| )
 | |
| 
 | |
| 
 | |
| 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'
 | |
|             packages_generator = PackagesGenerator(
 | |
|                 variants=[],
 | |
|                 excluded_packages=[],
 | |
|                 included_packages=[],
 | |
|             )
 | |
|             file_name = packages_generator.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(
 | |
|             variants=[
 | |
|                 variant_info_1,
 | |
|                 variant_info_2,
 | |
|             ],
 | |
|             excluded_packages=['zziplib-utils'],
 | |
|             included_packages=['vim-file*'],
 | |
|         )
 | |
|         test_packages = defaultdict(
 | |
|             lambda: defaultdict(
 | |
|                 lambda: defaultdict(
 | |
|                     list,
 | |
|                 )
 | |
|             )
 | |
|         )
 | |
|         test_packages['TestRepo']['x86_64']['zziplib'] = \
 | |
|             [
 | |
|                 'zziplib.i686',
 | |
|                 'zziplib.x86_64',
 | |
|             ]
 | |
|         test_packages['TestRepo2']['x86_64']['vim'] = \
 | |
|             [
 | |
|                 'vim-X11.i686',
 | |
|                 'vim-common.i686',
 | |
|                 'vim-enhanced.i686',
 | |
|                 'vim-filesystem.noarch',
 | |
|             ]
 | |
|         result = pg.generate_packages_json()
 | |
|         self.assertEqual(
 | |
|             test_packages,
 | |
|             result,
 | |
|         )
 | |
| 
 | |
| 
 | |
| if __name__ == '__main__':
 | |
|     main()
 |