Пример #1
0
def restore_from_obj(input_dir='./', file_treeobj='HEAD', output_dir='./restore/'):
    """
    восстановление папок
    param:
        file_treeobj - файл TreeObject с которого начнется восстановление папок и
                            файлов в виде 'f8/378c9d4b73baf88a4074f3d4b45fb0bc68c52c'
    return:
    """

    with open(input_dir + file_treeobj, 'r') as f:
        tree_lines = f.readlines()

    # print(tree_lines)
    for el in tree_lines:
        item = get_from_text(el)
        if item[1] == 'tree':
            dir_name = output_dir + item[3]
            # print(f'Create TREE = {dir_name}')
            os.mkdir(dir_name)
            sha1_dir = item[2]
            output_dir_new = dir_name + '/'
            file_treeobj_new = sha1_dir[:2] + '/' + sha1_dir[2:]
            restore_from_obj(input_dir=input_dir, file_treeobj=file_treeobj_new, output_dir=output_dir_new)
        else:
            if item[1] == 'blob':
                filename = item[3]
                # print(f'Create BLOB = {filename}')
                bobj = BlobObject()
                bobj.sha1 = item[2]
                bobj.restore(input_directory=input_dir, output_file=output_dir + filename)
Пример #2
0
 def test_restore_textfile(self):
     """
     BlobOblect: проверка корректно ли восстановился текстовый файл, т.е. совпадает размер, хеш и сам вид файла
     :return:
     """
     b_obj = BlobObject(filename=self.current_dir_test +
                        '/test-files/text_for_blobobj.txt',
                        output_dir=self.output_dir)
     b_obj.save()
     b_obj.restore(input_directory=self.output_dir,
                   output_file=self.output_dir + 'restore_text.txt')
     size_restore = os.path.getsize(self.output_dir + 'restore_text.txt')
     self.assertEqual(b_obj.size, size_restore)
Пример #3
0
    def test_restore_imagefile(self):
        """
        BlobOblect: проверка корректно ли восстановился файл изображения png, т.е. совпадает размер, хеш и сам вид файла
        :return:
        """

        b_obj = BlobObject(filename=self.current_dir_test +
                           '/test-files/image_670610.png',
                           output_dir=self.output_dir)
        b_obj.save()
        b_obj.restore(input_directory=self.output_dir,
                      output_file=self.output_dir + 'restore_image.png')
        size_restore = os.path.getsize(self.output_dir + 'restore_image.png')
        self.assertEqual(b_obj.size, size_restore)