mirror of
https://github.com/theupdateframework/python-tuf
synced 2026-05-24 10:08:28 +00:00
Add code coverage for load_repository
This commit is contained in:
parent
321b4af058
commit
aad5c94b04
3 changed files with 23 additions and 5 deletions
|
|
@ -1542,9 +1542,20 @@ def test_load_repository(self):
|
|||
temporary_directory = tempfile.mkdtemp(dir=self.temporary_directory)
|
||||
original_repository_directory = os.path.join('repository_data',
|
||||
'repository')
|
||||
|
||||
repository_directory = os.path.join(temporary_directory, 'repository')
|
||||
metadata_directory = os.path.join(repository_directory, 'metadata.staged')
|
||||
shutil.copytree(original_repository_directory, repository_directory)
|
||||
|
||||
|
||||
# For testing purposes, add a metadata file with an extension that is
|
||||
# not supported, and another with invalid JSON content.
|
||||
invalid_metadata_file = os.path.join(metadata_directory, 'root.xml')
|
||||
root_file = os.path.join(metadata_directory, 'root.json')
|
||||
shutil.copyfile(root_file, invalid_metadata_file)
|
||||
bad_root_content = os.path.join(metadata_directory, 'root_bad.json')
|
||||
with open(bad_root_content, 'wb') as file_object:
|
||||
file_object.write('bad')
|
||||
|
||||
repository = repo_tool.load_repository(repository_directory)
|
||||
self.assertTrue(isinstance(repository, repo_tool.Repository))
|
||||
|
||||
|
|
@ -1561,8 +1572,8 @@ def test_load_repository(self):
|
|||
self.assertTrue(len(repository.timestamp.keys))
|
||||
self.assertEqual(1, repository.targets('role1').version)
|
||||
|
||||
# Assumed the targets (tuf/tests/repository_data/) role contains 'file1.txt'
|
||||
# and 'file2.txt'.
|
||||
# It is assumed that the targets (tuf/tests/repository_data/) role contains
|
||||
# 'file1.txt' and 'file2.txt'.
|
||||
self.assertTrue('/file1.txt' in repository.targets.target_files)
|
||||
self.assertTrue('/file2.txt' in repository.targets.target_files)
|
||||
self.assertTrue('/file3.txt' in repository.targets('role1').target_files)
|
||||
|
|
|
|||
|
|
@ -2887,6 +2887,8 @@ def load_repository(repository_directory):
|
|||
metadata_name = metadata_name[:-extension_length]
|
||||
|
||||
else:
|
||||
logger.debug('Skipping file with unsupported metadata'
|
||||
' extension: ' + repr(metadata_path))
|
||||
continue
|
||||
|
||||
# Skip top-level roles, only interested in delegated roles now that the
|
||||
|
|
@ -2906,7 +2908,9 @@ def load_repository(repository_directory):
|
|||
try:
|
||||
signable = tuf.util.load_json_file(metadata_path)
|
||||
|
||||
except (ValueError, IOError):
|
||||
except (tuf.Error, ValueError, IOError):
|
||||
logger.debug('Tried to load metadata with invalid JSON'
|
||||
' content: ' + repr(metadata_path))
|
||||
continue
|
||||
|
||||
metadata_object = signable['signed']
|
||||
|
|
@ -2931,6 +2935,9 @@ def load_repository(repository_directory):
|
|||
|
||||
if os.path.exists(metadata_path + '.gz'):
|
||||
roleinfo['compressions'].append('gz')
|
||||
|
||||
else:
|
||||
logger.debug('A compressed version does not exist.')
|
||||
|
||||
tuf.roledb.add_role(metadata_name, roleinfo)
|
||||
loaded_metadata.append(metadata_name)
|
||||
|
|
|
|||
|
|
@ -917,7 +917,7 @@ def load_json_file(filepath):
|
|||
|
||||
tuf.Error: If 'filepath' cannot be deserialized to a Python object.
|
||||
|
||||
IOError in case of runtime IO exceptions.
|
||||
IOError: If there are runtime IO exceptions.
|
||||
|
||||
<Side Effects>
|
||||
None.
|
||||
|
|
|
|||
Loading…
Reference in a new issue