Пример #1
0
 def generate_and_store_file_objects(self, file_paths: List[Path],
                                     extractor_dir: str,
                                     parent: FileObject):
     extracted_files = {}
     for item in file_paths:
         if not file_is_empty(item):
             current_file = FileObject(file_path=str(item))
             current_virtual_path = join_virtual_path(
                 get_base_of_virtual_path(parent.get_virtual_file_paths()[
                     parent.get_root_uid()][0]), parent.uid,
                 get_object_path_excluding_fact_dirs(
                     make_unicode_string(str(item)),
                     str(Path(extractor_dir, 'files'))))
             current_file.temporary_data[
                 'parent_fo_type'] = get_file_type_from_path(
                     parent.file_path)['mime']
             if current_file.uid in extracted_files:  # the same file is extracted multiple times from one archive
                 extracted_files[current_file.uid].virtual_file_path[
                     parent.get_root_uid()].append(current_virtual_path)
             else:
                 self.db_interface.set_unpacking_lock(current_file.uid)
                 self.file_storage_system.store_file(current_file)
                 current_file.virtual_file_path = {
                     parent.get_root_uid(): [current_virtual_path]
                 }
                 current_file.parent_firmware_uids.add(
                     parent.get_root_uid())
                 extracted_files[current_file.uid] = current_file
     return extracted_files
Пример #2
0
def test_add_file_object_to_firmware():
    root = create_test_firmware()
    child_fo = create_test_file_object()
    root.add_included_file(child_fo)
    assert root.uid in child_fo.virtual_file_path.keys(
    ), 'no virtual file path for root available'
    assert child_fo.virtual_file_path[root.uid][0] == join_virtual_path(
        root.uid, child_fo.file_path), 'virtual file path not correct'
Пример #3
0
def test_add_file_object_to_file_object():
    root = create_test_firmware()
    child_fo = create_test_file_object()
    root.add_included_file(child_fo)
    grandchild_fo = create_test_file_object(
        bin_path='get_files_test/testfile2')
    child_fo.add_included_file(grandchild_fo)
    assert grandchild_fo.virtual_file_path[root.uid][0] == join_virtual_path(
        root.uid, child_fo.uid, grandchild_fo.file_path)