Пример #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_check_valid_blobobj_file(self):
     """
     BlobOblect: проверка соответствия хеша содержимому файла который корректный
     :return:
     """
     b_obj = BlobObject(filename=self.current_dir_test +
                        '/test-files/text_for_blobobj.txt',
                        output_dir=self.output_dir)
     b_obj.sha1 = 'c79c497f5012c3065de47887d819ecca426ac697'
     res = b_obj.check_exist_blob(check_dir=self.current_dir_test +
                                  '/test-files/out-etalon/valid-blobobj/')
     self.assertEqual(res, True)
Пример #3
0
 def test_check_novalid_blobobj_file(self):
     """
     BlobOblect: проверка соответствия хеша содержимому файла который НЕ корректный
     :return:
     """
     b_obj = BlobObject(filename=self.current_dir_test +
                        '/test-files/text_for_blobobj.txt',
                        output_dir=self.output_dir)
     b_obj.sha1 = 'c79c497f5012c3065de47887d819ecca426ac697'
     self.assertRaises(BaseException,
                       b_obj.check_exist_blob,
                       check_dir=self.current_dir_test +
                       '/test-files/out-etalon/novalid-blobobj/')