def test_parse(self): FILENAME = 'file.txt' SUBDIR = 'subdir' if not os.path.isdir(SUBDIR): os.makedirs(SUBDIR) self.create_and_commit_file(FILENAME) self.create_and_commit_file(os.path.join(SUBDIR, 'another-file.txt')) parser = GitTreeParser() tree_items = parser.parse('HEAD^{tree}') self.assertIn(FILENAME, tree_items) self.assertIn(SUBDIR, tree_items) file_item = tree_items[FILENAME] self.assertEqual('100644', file_item.mode) self.assertEqual('blob', file_item.type) self.assertIsSha1(file_item.sha1) self.assertEqual(FILENAME, file_item.name) dir_item = tree_items[SUBDIR] self.assertEqual('040000', dir_item.mode) self.assertEqual('tree', dir_item.type) self.assertIsSha1(dir_item.sha1) self.assertEqual(SUBDIR, dir_item.name)
def setUp(self): super(TreeDirItemWithRepositoryTest, self).setUp() self.filename, self.subdirname = self.create_and_commit_file_and_subdir() tree_sha1 = subprocess.check_output(['git', 'rev-parse', 'HEAD^{tree}']).strip() self.context_values = {TreeContextNames.SHA1:tree_sha1} parser = GitTreeParser() self.tree_items = parser.parse('HEAD^{tree}')
def get_target_object(self): tree_sha1 = self.get_context_value(TreeContextNames.SHA1) parser = GitTreeParser() items = parser.parse(tree_sha1) item = items[self.name] dir_struct = self.get_context_value(DIR_STRUCTURE_CONTEXT_NAME) if item.type == 'blob': target_dir = dir_struct.get_blobs_dir() elif item.type == 'tree': target_dir = dir_struct.get_trees_dir() target_object = target_dir.get_item(item.sha1) return target_object
def get_items_names(self): tree_sha1 = self.parent_dir.get_context_value(TreeContextNames.SHA1) parser = GitTreeParser() items = parser.parse(tree_sha1) return items.keys()