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)
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)
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/')