def testGetChangeLog(self): output = textwrap.dedent( """ commit revision tree tree_revision parents parent_revision author Test author-mail [email protected] author-time 2016-07-13 20:37:06 committer Test committer-mail [email protected] committer-time 2016-07-13 20:37:06 --Message start-- blabla --Message end-- :100644 100644 25f95f c766f1 M src/a/b.py """ ) expected_changelog = change_log.ChangeLog( change_log.Contributor('Test', '*****@*****.**', datetime(2016, 7, 13, 20, 37, 6)), change_log.Contributor('Test', '*****@*****.**', datetime(2016, 7, 13, 20, 37, 6)), 'revision', None, 'blabla', [change_log.FileChangeInfo('modify', 'src/a/b.py', 'src/a/b.py')], 'https://repo/path/+/revision', None, None) self.mock(script_util, 'GetCommandOutput', lambda *_: output) # TODO: compare the objects directly, rather than via ToDict self.assertDictEqual(self.local_repo.GetChangeLog('revision').ToDict(), expected_changelog.ToDict())
def testGitChangeLogParser(self): output = textwrap.dedent(""" commit revision tree tree_revision parents parent_revision author Test author-mail [email protected] author-time 2016-07-13 20:37:06 committer Test committer-mail [email protected] committer-time 2016-07-13 20:37:06 --Message start-- Revert commit messages... > Committed: https://c.com/+/c9cc182781484f9010f062859cda048afefefefe Review-Url: https://codereview.chromium.org/2391763002 Cr-Commit-Position: refs/heads/master@{#425880} --Message end-- :100644 100644 25f95f c766f1 M src/a/b.py :100644 100644 25aa5f c777f1 X src/a/c.py """) message = ('Revert commit messages...\n' '> Committed: https://c.com/+/' 'c9cc182781484f9010f062859cda048afefefefe\n' 'Review-Url: https://codereview.chromium.org/2391763002\n' 'Cr-Commit-Position: refs/heads/master@{#425880}') expected_changelog = change_log.ChangeLog( change_log.Contributor('Test', '*****@*****.**', datetime(2016, 7, 13, 20, 37, 6)), change_log.Contributor('Test', '*****@*****.**', datetime(2016, 7, 13, 20, 37, 6)), 'revision', 425880, message, [change_log.FileChangeInfo('modify', 'src/a/b.py', 'src/a/b.py')], 'https://repo/+/revision', 'https://codereview.chromium.org/2391763002', 'c9cc182781484f9010f062859cda048afefefefe') changelog = local_git_parsers.GitChangeLogParser()(output, 'https://repo', 'refs/heads/master') self.assertDictEqual(expected_changelog.ToDict(), changelog.ToDict())
def testGetChangeLogs(self): output = textwrap.dedent( """ **Changelog start** commit rev1 tree 27b0421273ed4aea25e497c6d26d9c7db6481852 parents rev22c9e author author1 author-mail [email protected] author-time 2016-06-02 10:55:38 committer Commit bot committer-mail [email protected] committer-time 2016-06-02 10:57:13 --Message start-- Message 1 --Message end-- :100644 100644 28e117 f12d3 D a/b.py **Changelog start** commit rev2 tree d22d3786e135b83183cfeba5f3d8913959f56299 parents ac7ee4ce7b8d39b22a710c58d110e0039c11cf9a author author2 author-mail [email protected] author-time 2016-06-02 10:53:03 committer Commit bot committer-mail [email protected] committer-time 2016-06-02 10:54:14 --Message start-- Message 2 --Message end-- :100644 100644 7280f df186 A b/c.py """ ) expected_changelogs = [ change_log.ChangeLog( change_log.Contributor('author1', '*****@*****.**', datetime(2016, 6, 2, 10, 55, 38)), change_log.Contributor('Commit bot', '*****@*****.**', datetime(2016, 6, 2, 10, 57, 13)), 'rev1', None, 'Message 1', [change_log.FileChangeInfo('delete', 'a/b.py', None)], 'https://repo/path/+/rev1', None, None), change_log.ChangeLog( change_log.Contributor('author2', '*****@*****.**', datetime(2016, 6, 2, 10, 53, 3)), change_log.Contributor('Commit bot', '*****@*****.**', datetime(2016, 6, 2, 10, 54, 14)), 'rev2', None, 'Message 2', [change_log.FileChangeInfo('add', None, 'b/c.py')], 'https://repo/path/+/rev2', None, None), ] self.mock(script_util, 'GetCommandOutput', lambda *_: output) changelogs = self.local_repo.GetChangeLogs('rev0', 'rev2') for changelog, expected_changelog in zip(changelogs, expected_changelogs): # TODO(katesonia): Add __eq__ in changelog to compare. self.assertEqual(changelog.ToDict(), expected_changelog.ToDict())
def testGitChangeLogsParser(self): output = textwrap.dedent(""" **Changelog start** commit rev1 tree 27b0421273ed4aea25e497c6d26d9c7db6481852 parents rev22c9e author author1 author-mail [email protected] author-time 2016-06-02 10:55:38 committer Commit bot committer-mail [email protected] committer-time 2016-06-02 10:57:13 --Message start-- Message 1 --Message end-- :100644 100644 28e117 f12d3 D a/b.py **Changelog start** commit rev2 tree d22d3786e135b83183cfeba5f3d8913959f56299 parents ac7ee4ce7b8d39b22a710c58d110e0039c11cf9a author author2 author-mail [email protected] author-time 2016-06-02 10:53:03 committer Commit bot committer-mail [email protected] committer-time 2016-06-02 10:54:14 --Message start-- Message 2 --Message end-- :100644 100644 7280f df186 A b/c.py **Changelog start** commit rev3 tree d22d3786e135b83183cfeba5f3d8913959f56299 parents ac7ee4ce7b8d39b22a710c58d110e0039c11cf9a author author3 author-mail [email protected] author-time 2016-06-02 10:53:03 committer Commit bot committer-mail [email protected] committer-time 2016-06-02 10:54:14 --Message start-- Message 3 --Message end-- :100644 100644 3f2e 20a5 R078 b/c.py b/cc.py """) expected_changelogs = [ change_log.ChangeLog( change_log.Contributor('author1', '*****@*****.**', datetime(2016, 6, 2, 10, 55, 38)), change_log.Contributor('Commit bot', '*****@*****.**', datetime(2016, 6, 2, 10, 57, 13)), 'rev1', None, 'Message 1', [change_log.FileChangeInfo('delete', 'a/b.py', None)], 'http://repo/+/rev1', None, None), change_log.ChangeLog( change_log.Contributor('author2', '*****@*****.**', datetime(2016, 6, 2, 10, 53, 3)), change_log.Contributor('Commit bot', '*****@*****.**', datetime(2016, 6, 2, 10, 54, 14)), 'rev2', None, 'Message 2', [change_log.FileChangeInfo('add', None, 'b/c.py')], 'http://repo/+/rev2', None, None), change_log.ChangeLog( change_log.Contributor('author3', '*****@*****.**', datetime(2016, 6, 2, 10, 53, 3)), change_log.Contributor('Commit bot', '*****@*****.**', datetime(2016, 6, 2, 10, 54, 14)), 'rev3', None, 'Message 3', [change_log.FileChangeInfo('rename', 'b/c.py', 'b/cc.py')], 'http://repo/+/rev3', None, None), ] changelogs = local_git_parsers.GitChangeLogsParser()(output, 'http://repo', 'ref') for changelog, expected_changelog in zip(changelogs, expected_changelogs): self.assertEqual(changelog.ToDict(), expected_changelog.ToDict())