コード例 #1
0
	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)]
コード例 #2
0
	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
コード例 #3
0
	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()
コード例 #4
0
	def _get_parsed_commit(self):
		commit_sha1 = self.get_context_value(CommitContextNames.SHA1)
		parser = GitCommitParser()
		parsed_commit = parser.parse(commit_sha1)
		return parsed_commit
コード例 #5
0
	def get_content(self):
		commit_sha1 = self.get_context_value(CommitContextNames.SHA1)
		parser = GitCommitParser()
		commit = parser.parse(commit_sha1)
		return commit.message
コード例 #6
0
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)