OLD | NEW |
---|---|
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 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 os | 8 import os |
9 import sys | 9 import sys |
10 import unittest | 10 import unittest |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
66 '/content/views/pie.h': '', | 66 '/content/views/pie.h': '', |
67 }) | 67 }) |
68 | 68 |
69 | 69 |
70 class _BaseTestCase(unittest.TestCase): | 70 class _BaseTestCase(unittest.TestCase): |
71 def setUp(self): | 71 def setUp(self): |
72 self.repo = test_repo() | 72 self.repo = test_repo() |
73 self.files = self.repo.files | 73 self.files = self.repo.files |
74 self.root = '/' | 74 self.root = '/' |
75 self.fopen = self.repo.open_for_reading | 75 self.fopen = self.repo.open_for_reading |
76 self.glob = self.repo.glob | |
77 | 76 |
78 def db(self, root=None, fopen=None, os_path=None, glob=None): | 77 def db(self, root=None, fopen=None, os_path=None): |
79 root = root or self.root | 78 root = root or self.root |
80 fopen = fopen or self.fopen | 79 fopen = fopen or self.fopen |
81 os_path = os_path or self.repo | 80 os_path = os_path or self.repo |
82 glob = glob or self.glob | 81 return owners.Database(root, fopen, os_path) |
83 return owners.Database(root, fopen, os_path, glob) | |
84 | 82 |
85 | 83 |
86 class OwnersDatabaseTest(_BaseTestCase): | 84 class OwnersDatabaseTest(_BaseTestCase): |
87 def test_constructor(self): | 85 def test_constructor(self): |
88 self.assertNotEquals(self.db(), None) | 86 self.assertNotEquals(self.db(), None) |
89 | 87 |
90 def test_files_not_covered_by__valid_inputs(self): | 88 def test_files_not_covered_by__valid_inputs(self): |
91 db = self.db() | 89 db = self.db() |
92 | 90 |
93 # Check that we're passed in a sequence that isn't a string. | 91 # Check that we're passed in a sequence that isn't a string. |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
143 ['content/content.gyp', # Not covered | 141 ['content/content.gyp', # Not covered |
144 'content/bar/foo.cc', # Not covered (combines in) | 142 'content/bar/foo.cc', # Not covered (combines in) |
145 'content/baz/froboz.h', # Not covered | 143 'content/baz/froboz.h', # Not covered |
146 'chrome/gpu/gpu_channel.h', # Owned by ken | 144 'chrome/gpu/gpu_channel.h', # Owned by ken |
147 'chrome/renderer/gpu/gpu_channel_host.h' # Owned by * via parent | 145 'chrome/renderer/gpu/gpu_channel_host.h' # Owned by * via parent |
148 ], | 146 ], |
149 [ken], | 147 [ken], |
150 ['content/content.gyp', 'content/bar/foo.cc', 'content/baz/froboz.h']) | 148 ['content/content.gyp', 'content/bar/foo.cc', 'content/baz/froboz.h']) |
151 | 149 |
152 def test_per_file(self): | 150 def test_per_file(self): |
153 # brett isn't allowed to approve ugly.cc | |
dtu
2016/07/14 01:06:51
This comment didn't match the code. The OWNERS fil
Dirk Pranke
2016/07/14 19:52:23
true, good catch.
| |
154 self.files['/content/baz/OWNERS'] = owners_file(brett, | 151 self.files['/content/baz/OWNERS'] = owners_file(brett, |
155 lines=['per-file ugly.*=tom@example.com']) | 152 lines=['per-file ugly.*=tom@example.com']) |
153 | |
154 # peter isn't allowed to approve ugly.cc | |
155 self.assert_files_not_covered_by(['content/baz/ugly.cc'], | |
156 [peter], | |
157 ['content/baz/ugly.cc']) | |
158 | |
159 # brett is allowed to approve ugly.cc | |
156 self.assert_files_not_covered_by(['content/baz/ugly.cc'], | 160 self.assert_files_not_covered_by(['content/baz/ugly.cc'], |
157 [brett], | 161 [brett], |
158 []) | 162 []) |
159 | 163 |
160 # tom is allowed to approve ugly.cc, but not froboz.h | 164 # tom is allowed to approve ugly.cc, but not froboz.h |
161 self.assert_files_not_covered_by(['content/baz/ugly.cc'], | 165 self.assert_files_not_covered_by(['content/baz/ugly.cc'], |
162 [tom], | 166 [tom], |
163 []) | 167 []) |
164 self.assert_files_not_covered_by(['content/baz/froboz.h'], | 168 self.assert_files_not_covered_by(['content/baz/froboz.h'], |
165 [tom], | 169 [tom], |
166 ['content/baz/froboz.h']) | 170 ['content/baz/froboz.h']) |
167 | 171 |
168 def test_per_file_with_spaces(self): | 172 def test_per_file_with_spaces(self): |
169 # This is the same as test_per_file(), except that we include spaces | 173 # This is the same as test_per_file(), except that we include spaces |
170 # on the per-file line. brett isn't allowed to approve ugly.cc; | 174 # on the per-file line. |
171 # tom is allowed to approve ugly.cc, but not froboz.h | 175 # tom is allowed to approve ugly.cc, but not froboz.h |
172 self.files['/content/baz/OWNERS'] = owners_file(brett, | 176 self.files['/content/baz/OWNERS'] = owners_file(brett, |
173 lines=['per-file ugly.* = tom@example.com']) | 177 lines=['per-file ugly.* = tom@example.com']) |
178 | |
179 # peter isn't allowed to approve ugly.cc | |
180 self.assert_files_not_covered_by(['content/baz/ugly.cc'], | |
181 [peter], | |
182 ['content/baz/ugly.cc']) | |
183 | |
184 # brett is allowed to approve ugly.cc | |
174 self.assert_files_not_covered_by(['content/baz/ugly.cc'], | 185 self.assert_files_not_covered_by(['content/baz/ugly.cc'], |
175 [brett], | 186 [brett], |
176 []) | 187 []) |
177 | 188 |
189 # tom is allowed to approve ugly.cc, but not froboz.h | |
178 self.assert_files_not_covered_by(['content/baz/ugly.cc'], | 190 self.assert_files_not_covered_by(['content/baz/ugly.cc'], |
179 [tom], | 191 [tom], |
180 []) | 192 []) |
181 self.assert_files_not_covered_by(['content/baz/froboz.h'], | 193 self.assert_files_not_covered_by(['content/baz/froboz.h'], |
182 [tom], | 194 [tom], |
183 ['content/baz/froboz.h']) | 195 ['content/baz/froboz.h']) |
184 | 196 |
197 def test_per_file_with_nonexistent_file(self): | |
198 self.files['/content/baz/OWNERS'] = owners_file(brett, | |
199 lines=['per-file ugly.*=tom@example.com']) | |
200 | |
201 # peter isn't allowed to approve ugly.nonexistent.cc, but brett and tom are. | |
202 self.assert_files_not_covered_by(['content/baz/ugly.nonexistent.cc'], | |
203 [peter], | |
204 ['content/baz/ugly.nonexistent.cc']) | |
205 self.assert_files_not_covered_by(['content/baz/ugly.nonexistent.cc'], | |
206 [brett], | |
207 []) | |
208 self.assert_files_not_covered_by(['content/baz/ugly.nonexistent.cc'], | |
209 [tom], | |
210 []) | |
211 | |
185 def test_per_file__set_noparent(self): | 212 def test_per_file__set_noparent(self): |
186 self.files['/content/baz/OWNERS'] = owners_file(brett, | 213 self.files['/content/baz/OWNERS'] = owners_file(brett, |
187 lines=['per-file ugly.*=tom@example.com', | 214 lines=['per-file ugly.*=tom@example.com', |
188 'per-file ugly.*=set noparent']) | 215 'per-file ugly.*=set noparent']) |
189 | 216 |
190 # brett isn't allowed to approve ugly.cc | 217 # brett isn't allowed to approve ugly.cc |
191 self.assert_files_not_covered_by(['content/baz/ugly.cc'], | 218 self.assert_files_not_covered_by(['content/baz/ugly.cc'], |
192 [brett], | 219 [brett], |
193 ['content/baz/ugly.cc']) | 220 ['content/baz/ugly.cc']) |
194 | 221 |
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
476 ('chrome/browser', 2)], | 503 ('chrome/browser', 2)], |
477 ken: [('chrome/gpu', 1)], | 504 ken: [('chrome/gpu', 1)], |
478 peter: [('chrome/renderer', 1)], | 505 peter: [('chrome/renderer', 1)], |
479 brett: [('chrome/browser', 1)]}, | 506 brett: [('chrome/browser', 1)]}, |
480 ['chrome/gpu', 'chrome/renderer', | 507 ['chrome/gpu', 'chrome/renderer', |
481 'chrome/browser'], | 508 'chrome/browser'], |
482 ben) | 509 ben) |
483 | 510 |
484 if __name__ == '__main__': | 511 if __name__ == '__main__': |
485 unittest.main() | 512 unittest.main() |
OLD | NEW |