| Index: tests/owners_unittest.py
|
| diff --git a/tests/owners_unittest.py b/tests/owners_unittest.py
|
| index d860b43976f400b3f755c4f910695f164bfd1f1c..f205aed697cf3bd6b74e1e62fcb3f246a1866c31 100755
|
| --- a/tests/owners_unittest.py
|
| +++ b/tests/owners_unittest.py
|
| @@ -214,7 +214,7 @@ class OwnersDatabaseTest(_BaseTestCase):
|
| self.files['/foo/OWNERS'] = owners_file_contents
|
| self.files['/foo/DEPS'] = ''
|
| try:
|
| - db.reviewers_for(['foo/DEPS'])
|
| + db.reviewers_for(['foo/DEPS'], None)
|
| self.fail() # pragma: no cover
|
| except owners.SyntaxErrorInOwnersFile, e:
|
| self.assertTrue(str(e).startswith('/foo/OWNERS:1'))
|
| @@ -230,44 +230,45 @@ class OwnersDatabaseTest(_BaseTestCase):
|
|
|
|
|
| class ReviewersForTest(_BaseTestCase):
|
| - def assert_reviewers_for(self, files, *potential_suggested_reviewers):
|
| + def assert_reviewers_for(self, files, potential_suggested_reviewers,
|
| + author=None):
|
| db = self.db()
|
| - suggested_reviewers = db.reviewers_for(set(files))
|
| + suggested_reviewers = db.reviewers_for(set(files), author)
|
| self.assertTrue(suggested_reviewers in
|
| [set(suggestion) for suggestion in potential_suggested_reviewers])
|
|
|
| def test_reviewers_for__basic_functionality(self):
|
| self.assert_reviewers_for(['chrome/gpu/gpu_channel.h'],
|
| - [ken])
|
| + [[ken]])
|
|
|
| def test_reviewers_for__set_noparent_works(self):
|
| self.assert_reviewers_for(['content/content.gyp'],
|
| - [john],
|
| - [darin])
|
| + [[john],
|
| + [darin]])
|
|
|
| def test_reviewers_for__valid_inputs(self):
|
| db = self.db()
|
|
|
| # Check that we're passed in a sequence that isn't a string.
|
| - self.assertRaises(AssertionError, db.reviewers_for, 'foo')
|
| + self.assertRaises(AssertionError, db.reviewers_for, 'foo', None)
|
| if hasattr(owners.collections, 'Iterable'):
|
| self.assertRaises(AssertionError, db.reviewers_for,
|
| - (f for f in ['x', 'y']))
|
| + (f for f in ['x', 'y']), None)
|
|
|
| # Check that the files are under the root.
|
| db.root = '/checkout'
|
| - self.assertRaises(AssertionError, db.reviewers_for, ['/OWNERS'])
|
| + self.assertRaises(AssertionError, db.reviewers_for, ['/OWNERS'], None)
|
|
|
| def test_reviewers_for__wildcard_dir(self):
|
| - self.assert_reviewers_for(['DEPS'], ['<anyone>'])
|
| - self.assert_reviewers_for(['DEPS', 'chrome/gpu/gpu_channel.h'], [ken])
|
| + self.assert_reviewers_for(['DEPS'], [['<anyone>']])
|
| + self.assert_reviewers_for(['DEPS', 'chrome/gpu/gpu_channel.h'], [[ken]])
|
|
|
| def test_reviewers_for__one_owner(self):
|
| self.assert_reviewers_for([
|
| 'chrome/gpu/gpu_channel.h',
|
| 'content/baz/froboz.h',
|
| 'chrome/renderer/gpu/gpu_channel_host.h'],
|
| - [brett])
|
| + [[brett]])
|
|
|
| def test_reviewers_for__two_owners(self):
|
| self.assert_reviewers_for([
|
| @@ -275,7 +276,7 @@ class ReviewersForTest(_BaseTestCase):
|
| 'content/content.gyp',
|
| 'content/baz/froboz.h',
|
| 'content/views/pie.h'],
|
| - [ken, john])
|
| + [[ken, john]])
|
|
|
| def test_reviewers_for__all_files(self):
|
| self.assert_reviewers_for([
|
| @@ -286,25 +287,25 @@ class ReviewersForTest(_BaseTestCase):
|
| 'content/bar/foo.cc',
|
| 'content/baz/froboz.h',
|
| 'content/views/pie.h'],
|
| - [peter, ken, john])
|
| + [[peter, ken, john]])
|
|
|
| def test_reviewers_for__per_file_owners_file(self):
|
| self.files['/content/baz/OWNERS'] = owners_file(lines=[
|
| 'per-file ugly.*=tom@example.com'])
|
| self.assert_reviewers_for(['content/baz/OWNERS'],
|
| - [john],
|
| - [darin])
|
| + [[john],
|
| + [darin]])
|
|
|
| def test_reviewers_for__per_file(self):
|
| self.files['/content/baz/OWNERS'] = owners_file(lines=[
|
| 'per-file ugly.*=tom@example.com'])
|
| self.assert_reviewers_for(['content/baz/ugly.cc'],
|
| - [tom])
|
| + [[tom]])
|
|
|
| def test_reviewers_for__two_nested_dirs(self):
|
| # The same owner is listed in two directories (one above the other)
|
| self.assert_reviewers_for(['chrome/browser/defaults.h'],
|
| - [brett])
|
| + [[brett]])
|
|
|
| # Here, although either ben or brett could review both files,
|
| # someone closer to the gpu_channel_host.h should also be suggested.
|
| @@ -313,8 +314,13 @@ class ReviewersForTest(_BaseTestCase):
|
| self.files['/chrome/renderer/gpu/OWNERS'] = owners_file(ken)
|
| self.assert_reviewers_for(['chrome/OWNERS',
|
| 'chrome/renderer/gpu/gpu_channel_host.h'],
|
| - [ben, ken],
|
| - [brett, ken])
|
| + [[ben, ken],
|
| + [brett, ken]])
|
| +
|
| + def test_reviewers_for__author_is_known(self):
|
| + # We should never suggest ken as a reviewer for his own changes.
|
| + self.assert_reviewers_for(['chrome/gpu/gpu_channel.h'],
|
| + [[ben], [brett]], author=ken)
|
|
|
|
|
| class LowestCostOwnersTest(_BaseTestCase):
|
|
|