Index: tests/presubmit_unittest.py |
=================================================================== |
--- tests/presubmit_unittest.py (revision 125361) |
+++ tests/presubmit_unittest.py (working copy) |
@@ -2109,11 +2109,15 @@ |
presubmit.OutputApi.PresubmitNotifyResult) |
def AssertOwnersWorks(self, tbr=False, issue='1', approvers=None, |
- rietveld_response=None, uncovered_files=None, expected_output=''): |
+ reviewers=None, is_committing=True, rietveld_response=None, |
+ uncovered_dirs=None, expected_output=''): |
if approvers is None: |
approvers = set() |
- if uncovered_files is None: |
- uncovered_files = set() |
+ if reviewers is None: |
+ reviewers = set() |
+ reviewers = reviewers.union(approvers) |
+ if uncovered_dirs is None: |
+ uncovered_dirs = set() |
change = self.mox.CreateMock(presubmit.Change) |
change.issue = issue |
@@ -2122,11 +2126,11 @@ |
fake_db = self.mox.CreateMock(owners.Database) |
fake_db.email_regexp = input_api.re.compile(owners.BASIC_EMAIL_REGEXP) |
input_api.owners_db = fake_db |
- input_api.is_committing = True |
+ input_api.is_committing = is_committing |
input_api.tbr = tbr |
- if not tbr and issue: |
- affected_file.LocalPath().AndReturn('foo.cc') |
+ if not is_committing or (not tbr and issue): |
+ affected_file.LocalPath().AndReturn('foo/xyz.cc') |
change.AffectedFiles(file_filter=None).AndReturn([affected_file]) |
owner_email = 'john@example.com' |
if not rietveld_response: |
@@ -2136,12 +2140,22 @@ |
{"sender": a, "text": "I approve", "approval": True} |
for a in approvers |
], |
+ "reviewers": reviewers |
} |
- input_api.rietveld.get_issue_properties( |
- int(input_api.change.issue), True).AndReturn(rietveld_response) |
- fake_db.files_not_covered_by(set(['foo.cc']), |
- approvers.union(set([owner_email]))).AndReturn(uncovered_files) |
+ if is_committing: |
+ people = approvers |
+ else: |
+ people = reviewers |
+ |
+ if issue: |
+ input_api.rietveld.get_issue_properties( |
+ int(input_api.change.issue), True).AndReturn(rietveld_response) |
+ people.add(owner_email) |
+ |
+ fake_db.directories_not_covered_by(set(['foo/xyz.cc']), |
+ people).AndReturn(uncovered_dirs) |
+ |
self.mox.ReplayAll() |
output = presubmit.PresubmitOutput() |
results = presubmit_canned_checks.CheckOwners(input_api, |
@@ -2158,11 +2172,17 @@ |
"sender": "ben@example.com", "text": "foo", "approval": True, |
}, |
], |
+ "reviewers": ["ben@example.com"], |
} |
self.AssertOwnersWorks(approvers=set(['ben@example.com']), |
rietveld_response=response, |
expected_output='') |
+ self.AssertOwnersWorks(approvers=set(['ben@example.com']), |
+ is_committing=False, |
+ rietveld_response=response, |
+ expected_output='') |
+ |
def testCannedCheckOwners_NotApproved(self): |
response = { |
"owner_email": "john@example.com", |
@@ -2171,46 +2191,89 @@ |
"sender": "ben@example.com", "text": "foo", "approval": False, |
}, |
], |
+ "reviewers": ["ben@example.com"], |
} |
self.AssertOwnersWorks( |
approvers=set(), |
+ reviewers=set(["ben@example.com"]), |
rietveld_response=response, |
expected_output= |
'Missing LGTM from someone other than john@example.com\n') |
+ self.AssertOwnersWorks( |
+ approvers=set(), |
+ reviewers=set(["ben@example.com"]), |
+ is_committing=False, |
+ rietveld_response=response, |
+ expected_output='') |
+ |
+ def testCannedCheckOwners_NoReviewers(self): |
+ response = { |
+ "owner_email": "john@example.com", |
+ "messages": [ |
+ { |
+ "sender": "ben@example.com", "text": "foo", "approval": False, |
+ }, |
+ ], |
+ "reviewers":[], |
+ } |
+ self.AssertOwnersWorks( |
+ approvers=set(), |
+ reviewers=set(), |
+ rietveld_response=response, |
+ expected_output= |
+ 'Missing LGTM from someone other than john@example.com\n') |
+ |
+ self.AssertOwnersWorks( |
+ approvers=set(), |
+ reviewers=set(), |
+ is_committing=False, |
+ rietveld_response=response, |
+ expected_output='') |
+ |
def testCannedCheckOwners_NoIssue(self): |
self.AssertOwnersWorks(issue=None, |
expected_output="OWNERS check failed: this change has no Rietveld " |
"issue number, so we can't check it for approvals.\n") |
+ self.AssertOwnersWorks(issue=None, is_committing=False, |
+ expected_output="") |
+ |
def testCannedCheckOwners_NoLGTM(self): |
self.AssertOwnersWorks(expected_output='Missing LGTM from someone ' |
'other than john@example.com\n') |
+ self.AssertOwnersWorks(is_committing=False, expected_output='') |
def testCannedCheckOwners_OnlyOwnerLGTM(self): |
self.AssertOwnersWorks(approvers=set(['john@example.com']), |
expected_output='Missing LGTM from someone ' |
'other than john@example.com\n') |
+ self.AssertOwnersWorks(approvers=set(['john@example.com']), |
+ is_committing=False, |
+ expected_output='') |
def testCannedCheckOwners_TBR(self): |
self.AssertOwnersWorks(tbr=True, |
expected_output='--tbr was specified, skipping OWNERS check\n') |
+ self.AssertOwnersWorks(tbr=True, is_committing=False, expected_output='') |
- def testCannedCheckOwners_Upload(self): |
- class FakeInputAPI(object): |
- is_committing = False |
- |
- results = presubmit_canned_checks.CheckOwners(FakeInputAPI(), |
- presubmit.OutputApi) |
- self.assertEqual(results, []) |
- |
def testCannedCheckOwners_WithoutOwnerLGTM(self): |
- self.AssertOwnersWorks(uncovered_files=set(['foo.cc']), |
- expected_output='Missing LGTM from an OWNER for: foo.cc\n') |
+ self.AssertOwnersWorks(uncovered_dirs=set(['foo']), |
+ expected_output='Missing LGTM from an OWNER for files in these ' |
+ 'directories:\n' |
+ ' foo\n') |
+ self.AssertOwnersWorks(uncovered_dirs=set(['foo']), |
+ is_committing=False, |
+ expected_output='Missing OWNER reviewers for files in these ' |
+ 'directories:\n' |
+ ' foo\n') |
def testCannedCheckOwners_WithLGTMs(self): |
self.AssertOwnersWorks(approvers=set(['ben@example.com']), |
- uncovered_files=set()) |
+ uncovered_dirs=set()) |
+ self.AssertOwnersWorks(approvers=set(['ben@example.com']), |
+ is_committing=False, |
+ uncovered_dirs=set()) |
def testCannedRunUnitTests(self): |
change = presubmit.Change( |
@@ -2299,7 +2362,7 @@ |
text_files=None, |
license_header=None, |
project_name=None, |
- owners_check=True) |
+ owners_check=False) |
self.assertEqual(1, len(results)) |
self.assertEqual( |
'Found line ending with white spaces in:', results[0]._message) |