OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2011 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 """Unit tests for owners.py.""" | 6 """Unit tests for owners.py.""" |
7 | 7 |
8 import unittest | 8 import unittest |
9 | 9 |
10 import owners | 10 import owners |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
48 self.files = self.repo.files | 48 self.files = self.repo.files |
49 self.root = '/' | 49 self.root = '/' |
50 self.fopen = self.repo.open_for_reading | 50 self.fopen = self.repo.open_for_reading |
51 | 51 |
52 def db(self, root=None, fopen=None, os_path=None): | 52 def db(self, root=None, fopen=None, os_path=None): |
53 root = root or self.root | 53 root = root or self.root |
54 fopen = fopen or self.fopen | 54 fopen = fopen or self.fopen |
55 os_path = os_path or self.repo | 55 os_path = os_path or self.repo |
56 return owners.Database(root, fopen, os_path) | 56 return owners.Database(root, fopen, os_path) |
57 | 57 |
58 def test_Constructor(self): | 58 def test_constructor(self): |
59 self.assertNotEquals(self.db(), None) | 59 self.assertNotEquals(self.db(), None) |
60 | 60 |
61 def assert_CoveredBy(self, files, reviewers): | 61 def assert_covered_by(self, files, reviewers): |
62 db = self.db() | 62 db = self.db() |
63 self.assertTrue(db.FilesAreCoveredBy(set(files), set(reviewers))) | 63 self.assertTrue(db.files_are_covered_by(set(files), set(reviewers))) |
64 | 64 |
65 def test_CoveredBy_Everyone(self): | 65 def test_covered_by__everyone(self): |
66 self.assert_CoveredBy(['DEPS'], [john]) | 66 self.assert_covered_by(['DEPS'], [john]) |
67 self.assert_CoveredBy(['DEPS'], [darin]) | 67 self.assert_covered_by(['DEPS'], [darin]) |
68 | 68 |
69 def test_CoveredBy_Explicit(self): | 69 def test_covered_by__explicit(self): |
70 self.assert_CoveredBy(['content/content.gyp'], [john]) | 70 self.assert_covered_by(['content/content.gyp'], [john]) |
71 self.assert_CoveredBy(['chrome/gpu/OWNERS'], [ken]) | 71 self.assert_covered_by(['chrome/gpu/OWNERS'], [ken]) |
72 | 72 |
73 def test_CoveredBy_OwnersPropagatesDown(self): | 73 def test_covered_by__owners_propagates_down(self): |
74 self.assert_CoveredBy(['chrome/gpu/OWNERS'], [ben]) | 74 self.assert_covered_by(['chrome/gpu/OWNERS'], [ben]) |
75 self.assert_CoveredBy(['/chrome/renderer/gpu/gpu_channel_host.h'], [peter]) | 75 self.assert_covered_by(['/chrome/renderer/gpu/gpu_channel_host.h'], [peter]) |
76 | 76 |
77 def assert_NotCoveredBy(self, files, reviewers, unreviewed_files): | 77 def assert_not_covered_by(self, files, reviewers, unreviewed_files): |
78 db = self.db() | 78 db = self.db() |
79 self.assertEquals(db.FilesNotCoveredBy(set(files), set(reviewers)), | 79 self.assertEquals(db.files_not_covered_by(set(files), set(reviewers)), |
80 set(unreviewed_files)) | 80 set(unreviewed_files)) |
81 | 81 |
82 def test_NotCoveredBy_NeedAtLeastOneReviewer(self): | 82 def test_not_covered_by__need_at_least_one_reviewer(self): |
83 self.assert_NotCoveredBy(['DEPS'], [], ['DEPS']) | 83 self.assert_not_covered_by(['DEPS'], [], ['DEPS']) |
84 | 84 |
85 def test_NotCoveredBy_OwnersPropagatesDown(self): | 85 def test_not_covered_by__owners_propagates_down(self): |
86 self.assert_NotCoveredBy( | 86 self.assert_not_covered_by( |
87 ['chrome/gpu/gpu_channel.h', 'chrome/renderer/gpu/gpu_channel_host.h'], | 87 ['chrome/gpu/gpu_channel.h', 'chrome/renderer/gpu/gpu_channel_host.h'], |
88 [ben], []) | 88 [ben], []) |
89 | 89 |
90 def test_NotCoveredBy_PartialCovering(self): | 90 def test_not_covered_by__partial_covering(self): |
91 self.assert_NotCoveredBy( | 91 self.assert_not_covered_by( |
92 ['content/content.gyp', 'chrome/renderer/gpu/gpu_channel_host.h'], | 92 ['content/content.gyp', 'chrome/renderer/gpu/gpu_channel_host.h'], |
93 [peter], ['content/content.gyp']) | 93 [peter], ['content/content.gyp']) |
94 | 94 |
95 def test_NotCoveredBy_SetNoParentWorks(self): | 95 def test_not_covered_by__set_noparent_works(self): |
96 self.assert_NotCoveredBy(['content/content.gyp'], [ben], | 96 self.assert_not_covered_by(['content/content.gyp'], [ben], |
97 ['content/content.gyp']) | 97 ['content/content.gyp']) |
98 | 98 |
99 def assert_ReviewersFor(self, files, expected_reviewers): | 99 def assert_reviewers_for(self, files, expected_reviewers): |
100 db = self.db() | 100 db = self.db() |
101 self.assertEquals(db.ReviewersFor(set(files)), set(expected_reviewers)) | 101 self.assertEquals(db.reviewers_for(set(files)), set(expected_reviewers)) |
102 | 102 |
103 def test_ReviewersFor_BasicFunctionality(self): | 103 def test_reviewers_for__basic_functionality(self): |
104 self.assert_ReviewersFor(['chrome/gpu/gpu_channel.h'], | 104 self.assert_reviewers_for(['chrome/gpu/gpu_channel.h'], |
105 [ken, ben, brett, owners.EVERYONE]) | 105 [ken, ben, brett, owners.EVERYONE]) |
106 | 106 |
107 def test_ReviewersFor_SetNoParentWorks(self): | 107 def test_reviewers_for__set_noparent_works(self): |
108 self.assert_ReviewersFor(['content/content.gyp'], [john, darin]) | 108 self.assert_reviewers_for(['content/content.gyp'], [john, darin]) |
109 | 109 |
110 def test_ReviewersFor_WildcardDir(self): | 110 def test_reviewers_for__wildcard_dir(self): |
111 self.assert_ReviewersFor(['DEPS'], [owners.EVERYONE]) | 111 self.assert_reviewers_for(['DEPS'], [owners.EVERYONE]) |
112 | 112 |
113 def assert_SyntaxError(self, owners_file_contents): | 113 def assert_syntax_error(self, owners_file_contents): |
114 db = self.db() | 114 db = self.db() |
115 self.files['/foo/OWNERS'] = owners_file_contents | 115 self.files['/foo/OWNERS'] = owners_file_contents |
116 self.files['/foo/DEPS'] = '' | 116 self.files['/foo/DEPS'] = '' |
117 self.assertRaises(owners.SyntaxErrorInOwnersFile, db.ReviewersFor, | 117 self.assertRaises(owners.SyntaxErrorInOwnersFile, db.reviewers_for, |
118 ['/foo/DEPS']) | 118 ['/foo/DEPS']) |
119 | 119 |
120 def test_SyntaxError_UnknownToken(self): | 120 def test_syntax_error__unknown_token(self): |
121 self.assert_SyntaxError('{}\n') | 121 self.assert_syntax_error('{}\n') |
122 | 122 |
123 def test_SyntaxError_UnknownSet(self): | 123 def test_syntax_error__unknown_set(self): |
124 self.assert_SyntaxError('set myfatherisbillgates\n') | 124 self.assert_syntax_error('set myfatherisbillgates\n') |
125 | 125 |
126 def test_SyntaxError_BadEmail(self): | 126 def test_syntax_error__bad_email(self): |
127 self.assert_SyntaxError('ben\n') | 127 self.assert_syntax_error('ben\n') |
128 | 128 |
129 | 129 |
130 if __name__ == '__main__': | 130 if __name__ == '__main__': |
131 unittest.main() | 131 unittest.main() |
OLD | NEW |