def get_items_names(self): parser = GitCommitParser() commit_sha1 = self.get_context_value(CommitContextNames.SHA1) commit = parser.parse(commit_sha1) num_parents = len(commit.parents) num_digits = len(str(num_parents)) return ['%s%0*d' % (self.prefix, num_digits, i + 1) for i in xrange(num_parents)]
def get_target_object(self): commit_sha1 = self.get_context_value(CommitContextNames.SHA1) parser = GitCommitParser() commit = parser.parse(commit_sha1) parent_index = self.parent_number - 1 parent_sha1 = commit.parents[parent_index] dir_struct = self.get_context_value(DIR_STRUCTURE_CONTEXT_NAME) commits_dir = dir_struct.get_commits_dir() parent_commit_dir = commits_dir.get_item(parent_sha1) return parent_commit_dir
def setUp(self): self.commit_content = self.join_lines( ( 'tree 0123456789012345678901234567890123456789', 'parent ' + self.PARENT_1_SHA1, 'parent ' + self.PARENT_2_SHA1, 'author ' + self.AUTHOR_NAME + ' <' + self.AUTHOR_EMAIL + '> ' + self.AUTHOR_DATE, 'committer ' + self.COMMITTER_NAME + ' <' + self.COMMITTER_EMAIL + '> ' + self.COMMITTER_DATE, '', ) + self.MESSAGE_LINES ) self.parser = GitCommitParser()
def _get_parsed_commit(self): commit_sha1 = self.get_context_value(CommitContextNames.SHA1) parser = GitCommitParser() parsed_commit = parser.parse(commit_sha1) return parsed_commit
def get_content(self): commit_sha1 = self.get_context_value(CommitContextNames.SHA1) parser = GitCommitParser() commit = parser.parse(commit_sha1) return commit.message
class GitCommitParserTest(unittest.TestCase): PARENT_1_SHA1 = 'abcdefabcdefabcdefabcdefabcdefabcdefabcd' PARENT_2_SHA1 = 'a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2' AUTHOR_NAME = 'Author Name' AUTHOR_EMAIL = '*****@*****.**' AUTHOR_DATE = '1350852983 -0700' AUTHOR_DATE_FORMATTED = 'Sun Oct 21 13:56:23 2012 -0700' COMMITTER_NAME = 'Name of Committer' COMMITTER_EMAIL = '*****@*****.**' COMMITTER_DATE = '1350507449 +0100' COMMITTER_DATE_FORMATTED = 'Wed Oct 17 21:57:29 2012 +0100' MESSAGE_LINES = ( 'This is the first line', '', '... of a commit message', 'with multiple lines.', ) def setUp(self): self.commit_content = self.join_lines( ( 'tree 0123456789012345678901234567890123456789', 'parent ' + self.PARENT_1_SHA1, 'parent ' + self.PARENT_2_SHA1, 'author ' + self.AUTHOR_NAME + ' <' + self.AUTHOR_EMAIL + '> ' + self.AUTHOR_DATE, 'committer ' + self.COMMITTER_NAME + ' <' + self.COMMITTER_EMAIL + '> ' + self.COMMITTER_DATE, '', ) + self.MESSAGE_LINES ) self.parser = GitCommitParser() def test_parse_commit_parents(self): commit = self.parser.parse_content(self.commit_content) self.assertSequenceEqual([self.PARENT_1_SHA1, self.PARENT_2_SHA1], commit.parents) def test_parse_commit_author_name(self): commit = self.parser.parse_content(self.commit_content) self.assertEqual(self.AUTHOR_NAME, commit.author.name) def test_parse_commit_author_email(self): commit = self.parser.parse_content(self.commit_content) self.assertEqual(self.AUTHOR_EMAIL, commit.author.email) def test_parse_commit_author_date(self): commit = self.parser.parse_content(self.commit_content) self.assertEqual(self.AUTHOR_DATE_FORMATTED, commit.author.date) def test_parse_commit_committer_name(self): commit = self.parser.parse_content(self.commit_content) self.assertEqual(self.COMMITTER_NAME, commit.committer.name) def test_parse_commit_committer_email(self): commit = self.parser.parse_content(self.commit_content) self.assertEqual(self.COMMITTER_EMAIL, commit.committer.email) def test_parse_commit_committer_date(self): commit = self.parser.parse_content(self.commit_content) self.assertEqual(self.COMMITTER_DATE_FORMATTED, commit.committer.date) def test_commit_date_1(self): commit_date = self.AUTHOR_DATE parsed_date = self.parser.parse_date(commit_date) self.assertEqual(self.AUTHOR_DATE_FORMATTED, parsed_date) def test_commit_date_2(self): commit_date = self.COMMITTER_DATE parsed_date = self.parser.parse_date(commit_date) self.assertEqual(self.COMMITTER_DATE_FORMATTED, parsed_date) def test_tz_parsing_1(self): seconds = self.parser.parse_tz_to_seconds('-0700') self.assertEqual(-7 * 60 * 60, seconds) def test_tz_parsing_2(self): seconds = self.parser.parse_tz_to_seconds('+1234') self.assertEqual(12*60*60 + 34*60, seconds) def test_parse_commit_message(self): commit = self.parser.parse_content(self.commit_content) self.assertEqual(self.join_lines(self.MESSAGE_LINES), commit.message) def join_lines(self, lines): return ''.join(line + '\n' for line in lines)