Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(116)

Unified Diff: tests/owners_unittest.py

Issue 6627059: make tests work, implement 'set noparent', owners propagating down (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: update w/ review feedback from maruel Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tests/filesystem_mock.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/owners_unittest.py
diff --git a/tests/owners_unittest.py b/tests/owners_unittest.py
index cc4e0d834d87d9c6aa5c2cfafc09bb1660001aee..7531f83af3c391c24e45aefb153afa78bc833779 100755
--- a/tests/owners_unittest.py
+++ b/tests/owners_unittest.py
@@ -19,15 +19,17 @@ peter = 'peter@example.com'
def owners_file(*email_addresses, **kwargs):
s = ''
+ if kwargs.get('comment'):
+ s += '# %s\n' % kwargs.get('comment')
if kwargs.get('noparent'):
- s = 'set noparent\n'
+ s += 'set noparent\n'
return s + '\n'.join(email_addresses) + '\n'
def test_repo():
return filesystem_mock.MockFileSystem(files={
'/DEPS' : '',
- '/OWNERS': owners_file('*'),
+ '/OWNERS': owners_file(owners.EVERYONE),
'/base/vlog.h': '',
'/chrome/OWNERS': owners_file(ben, brett),
'/chrome/gpu/OWNERS': owners_file(ken),
@@ -35,7 +37,7 @@ def test_repo():
'/chrome/renderer/OWNERS': owners_file(peter),
'/chrome/renderer/gpu/gpu_channel_host.h': '',
'/chrome/renderer/safe_browsing/scorer.h': '',
- '/content/OWNERS': owners_file(john, darin, noparent=True),
+ '/content/OWNERS': owners_file(john, darin, comment='foo', noparent=True),
'/content/content.gyp': '',
})
@@ -53,70 +55,76 @@ class OwnersDatabaseTest(unittest.TestCase):
os_path = os_path or self.repo
return owners.Database(root, fopen, os_path)
- def assertReviewersFor(self, files, expected_reviewers):
- db = self.db()
- self.assertEquals(db.ReviewersFor(set(files)), set(expected_reviewers))
+ def test_Constructor(self):
+ self.assertNotEquals(self.db(), None)
- def assertCoveredBy(self, files, reviewers):
+ def assert_CoveredBy(self, files, reviewers):
db = self.db()
self.assertTrue(db.FilesAreCoveredBy(set(files), set(reviewers)))
- def assertNotCoveredBy(self, files, reviewers, unreviewed_files):
+ def test_CoveredBy_Everyone(self):
+ self.assert_CoveredBy(['DEPS'], [john])
+ self.assert_CoveredBy(['DEPS'], [darin])
+
+ def test_CoveredBy_Explicit(self):
+ self.assert_CoveredBy(['content/content.gyp'], [john])
+ self.assert_CoveredBy(['chrome/gpu/OWNERS'], [ken])
+
+ def test_CoveredBy_OwnersPropagatesDown(self):
+ self.assert_CoveredBy(['chrome/gpu/OWNERS'], [ben])
+ self.assert_CoveredBy(['/chrome/renderer/gpu/gpu_channel_host.h'], [peter])
+
+ def assert_NotCoveredBy(self, files, reviewers, unreviewed_files):
db = self.db()
self.assertEquals(db.FilesNotCoveredBy(set(files), set(reviewers)),
set(unreviewed_files))
- def test_constructor(self):
- self.assertNotEquals(self.db(), None)
+ def test_NotCoveredBy_NeedAtLeastOneReviewer(self):
+ self.assert_NotCoveredBy(['DEPS'], [], ['DEPS'])
- def test_owners_for(self):
- self.assertReviewersFor(['DEPS'], [owners.ANYONE])
- self.assertReviewersFor(['content/content.gyp'], [john, darin])
- self.assertReviewersFor(['chrome/gpu/gpu_channel.h'], [ken])
-
- def test_covered_by(self):
- self.assertCoveredBy(['DEPS'], [john])
- self.assertCoveredBy(['DEPS'], [darin])
- self.assertCoveredBy(['content/content.gyp'], [john])
- self.assertCoveredBy(['chrome/gpu/OWNERS'], [ken])
- self.assertCoveredBy(['chrome/gpu/OWNERS'], [ben])
-
- def test_not_covered_by(self):
- self.assertNotCoveredBy(['DEPS'], [], ['DEPS'])
- self.assertNotCoveredBy(['content/content.gyp'], [ben],
- ['content/content.gyp'])
- self.assertNotCoveredBy(
- ['chrome/gpu/gpu_channel.h', 'chrome/renderer/gpu/gpu_channel_host.h'],
- [peter], ['chrome/gpu/gpu_channel.h'])
- self.assertNotCoveredBy(
+ def test_NotCoveredBy_OwnersPropagatesDown(self):
+ self.assert_NotCoveredBy(
['chrome/gpu/gpu_channel.h', 'chrome/renderer/gpu/gpu_channel_host.h'],
[ben], [])
- def test_comments_in_owners_file(self):
- # pylint: disable=W0212
+ def test_NotCoveredBy_PartialCovering(self):
+ self.assert_NotCoveredBy(
+ ['content/content.gyp', 'chrome/renderer/gpu/gpu_channel_host.h'],
+ [peter], ['content/content.gyp'])
+
+ def test_NotCoveredBy_SetNoParentWorks(self):
+ self.assert_NotCoveredBy(['content/content.gyp'], [ben],
+ ['content/content.gyp'])
+
+ def assert_ReviewersFor(self, files, expected_reviewers):
db = self.db()
- # Tests that this doesn't raise an error.
- db._ReadOwnersFile('OWNERS', 'DEPS')
+ self.assertEquals(db.ReviewersFor(set(files)), set(expected_reviewers))
+
+ def test_ReviewersFor_BasicFunctionality(self):
+ self.assert_ReviewersFor(['chrome/gpu/gpu_channel.h'],
+ [ken, ben, brett, owners.EVERYONE])
+
+ def test_ReviewersFor_SetNoParentWorks(self):
+ self.assert_ReviewersFor(['content/content.gyp'], [john, darin])
- def test_syntax_error_in_owners_file(self):
- # pylint: disable=W0212
+ def test_ReviewersFor_WildcardDir(self):
+ self.assert_ReviewersFor(['DEPS'], [owners.EVERYONE])
+
+ def assert_SyntaxError(self, owners_file_contents):
db = self.db()
- self.files['/foo/OWNERS'] = '{}\n'
- self.files['/foo/DEPS'] = '# DEPS\n'
- self.assertRaises(owners.SyntaxErrorInOwnersFile, db._ReadOwnersFile,
- '/foo/OWNERS', '/foo/DEPS')
-
- self.files['/bar/OWNERS'] = 'set myparentislinus\n'
- self.files['/bar/DEPS'] = '# DEPS\n'
- self.assertRaises(owners.SyntaxErrorInOwnersFile, db._ReadOwnersFile,
- '/bar/OWNERS', '/bar/DEPS')
-
- def test_owners_propagates_down(self):
- self.assertCoveredBy(['/chrome/renderer/gpu/gpu_channel_host.h'], [peter])
-
- def test_set_noparent(self):
- self.assertNotCoveredBy(['/content/content.gyp'], [peter],
- ['/content/content.gyp'])
+ self.files['/foo/OWNERS'] = owners_file_contents
+ self.files['/foo/DEPS'] = ''
+ self.assertRaises(owners.SyntaxErrorInOwnersFile, db.ReviewersFor,
+ ['/foo/DEPS'])
+
+ def test_SyntaxError_UnknownToken(self):
+ self.assert_SyntaxError('{}\n')
+
+ def test_SyntaxError_UnknownSet(self):
+ self.assert_SyntaxError('set myfatherisbillgates\n')
+
+ def test_SyntaxError_BadEmail(self):
+ self.assert_SyntaxError('ben\n')
if __name__ == '__main__':
« no previous file with comments | « tests/filesystem_mock.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698