Skip to content

Commit

Permalink
Merge branch 'get-arc-reviewers'
Browse files Browse the repository at this point in the history
* get-arc-reviewers:
  Add FindArcCommitReviewers to the list of finders
  Add tests
  Add FindArcCommitReviewers
  • Loading branch information
albertyw committed Oct 30, 2017
2 parents bd61309 + fa52a24 commit fb38eee
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 1 deletion.
22 changes: 21 additions & 1 deletion git_reviewers/reviewers.py
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,26 @@ def get_changed_files(self):
return git_diff_files


class FindArcCommitReviewers(FindLogReviewers):
"""
Get reviewers based on arc commit messages, which list which users
have approved past diffs
"""
def get_log_reviewers_from_file(self, file_path):
git_commit_messages_command = ['git', 'log', '--all', file_path]
git_commit_messages = self.run_command(git_commit_messages_command)
reviewers_identifier = 'Reviewed By: '
reviewers = []
for line in git_commit_messages:
if reviewers_identifier not in line:
continue
line = line.replace(reviewers_identifier, '')
line = line.split(', ')
line = [r.strip() for r in line]
reviewers += line
return reviewers


def show_reviewers(reviewers):
print(", ".join(reviewers))

Expand All @@ -110,7 +130,7 @@ def main():
args = parser.parse_args()
UBER = args.uber

finders = [FindDiffLogReviewers, FindLogReviewers]
finders = [FindDiffLogReviewers, FindLogReviewers, FindArcCommitReviewers]
reviewers = set()
for finder in finders:
finder_reviewers = finder().get_reviewers()
Expand Down
17 changes: 17 additions & 0 deletions git_reviewers/tests/test.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,23 @@ def test_get_changed_files(self):
self.assertEqual(files, ['README.rst', 'setup.py'])


class TestFindArcCommitReviewers(unittest.TestCase):
def setUp(self):
self.finder = reviewers.FindArcCommitReviewers()

def test_no_reviewers(self):
log = ['asdf']
self.finder.run_command = MagicMock(return_value=log)
reviewers = self.finder.get_log_reviewers_from_file('file')
self.assertEqual(reviewers, [])

def test_reviewers(self):
log = ['asdf', ' Reviewed By: asdf, qwer']
self.finder.run_command = MagicMock(return_value=log)
reviewers = self.finder.get_log_reviewers_from_file('file')
self.assertEqual(reviewers, ['asdf', 'qwer'])


class TestShowReviewers(unittest.TestCase):
@patch('builtins.print')
def test_show_reviewers(self, mock_print):
Expand Down

0 comments on commit fb38eee

Please sign in to comment.