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

Side by Side Diff: tests/owners_finder_test.py

Issue 12712002: An interactive tool to help find owners covering current change list. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Adding unit tests Created 7 years, 8 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 unified diff | Download patch | Annotate | Revision Log
« owners_finder.py ('K') | « owners_finder.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #!/usr/bin/env python
2 # Copyright (c) 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
5
6 """Unit tests for owners_finder.py."""
7
8 import os
9 import sys
10 import unittest
11
12
13 sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
14
15 from testing_support import filesystem_mock
16
17 import owners_finder
18 import owners
19
20
21 ben = 'ben@example.com'
22 brett = 'brett@example.com'
23 darin = 'darin@example.com'
24 john = 'john@example.com'
25 ken = 'ken@example.com'
26 peter = 'peter@example.com'
27 tom = 'tom@example.com'
28
29
30 def owners_file(*email_addresses, **kwargs):
31 s = ''
32 if kwargs.get('comment'):
33 s += '# %s\n' % kwargs.get('comment')
34 if kwargs.get('noparent'):
35 s += 'set noparent\n'
36 s += '\n'.join(kwargs.get('lines', [])) + '\n'
37 return s + '\n'.join(email_addresses) + '\n'
38
39
40 def test_repo():
41 return filesystem_mock.MockFileSystem(files={
42 '/DEPS': '',
43 '/OWNERS': owners_file(ken, peter, tom),
44 '/base/vlog.h': '',
45 '/chrome/OWNERS': owners_file(ben, brett),
46 '/chrome/browser/OWNERS': owners_file(brett),
47 '/chrome/browser/defaults.h': '',
48 '/chrome/gpu/OWNERS': owners_file(ken),
49 '/chrome/gpu/gpu_channel.h': '',
50 '/chrome/renderer/OWNERS': owners_file(peter),
51 '/chrome/renderer/gpu/gpu_channel_host.h': '',
52 '/chrome/renderer/safe_browsing/scorer.h': '',
53 '/content/OWNERS': owners_file(john, darin, comment='foo', noparent=True),
54 '/content/content.gyp': '',
55 '/content/bar/foo.cc': '',
56 '/content/baz/OWNERS': owners_file(brett),
57 '/content/baz/froboz.h': '',
58 '/content/baz/ugly.cc': '',
59 '/content/baz/ugly.h': '',
60 '/content/views/OWNERS': owners_file(ben, john, owners.EVERYONE,
61 noparent=True),
62 '/content/views/pie.h': '',
63 })
64
65
66 class OutputInterceptedOwnersFinder(owners_finder.OwnersFinder):
67 output = ''
68
69 def resetText(self):
70 self.output = ''
71
72 def indent(self):
73 self.output += '{'
74
75 def unindent(self):
76 self.output += '}'
77
78 def writeln(self, text=''):
79 self.output += text + '\n'
80
81
82 class _BaseTestCase(unittest.TestCase):
83 default_files = [
84 'base/vlog.h',
85 'chrome/browser/defaults.h',
86 'chrome/gpu/gpu_channel.h',
87 'chrome/renderer/gpu/gpu_channel_host.h',
88 'chrome/renderer/safe_browsing/scorer.h',
89 'content/content.gyp',
90 'content/bar/foo.cc',
91 'content/baz/ugly.cc',
92 'content/baz/ugly.h',
93 'content/views/pie.h'
94 ]
95
96 def setUp(self):
97 self.repo = test_repo()
98 self.root = '/'
99 self.fopen = self.repo.open_for_reading
100 self.glob = self.repo.glob
101
102 def ownersFinder(self, files):
103 finder = OutputInterceptedOwnersFinder(files, self.root,
104 fopen=self.fopen,
105 os_path=self.repo,
106 glob=self.glob,
107 disable_color=True)
108 return finder
109
110 def defaultFinder(self):
111 return self.ownersFinder(self.default_files)
112
113
114 class OwnersFinderTests(_BaseTestCase):
115 def test_constructor(self):
116 self.assertNotEquals(self.defaultFinder(), None)
117
118 def test_reset(self):
119 finder = self.defaultFinder()
120 self.assertEquals(finder.owners_queue,
121 [brett, peter, ken, tom, john, darin, ben])
122 self.assertEquals(finder.unreviewed_files, {
123 'base/vlog.h',
124 'chrome/browser/defaults.h',
125 'chrome/gpu/gpu_channel.h',
126 'chrome/renderer/gpu/gpu_channel_host.h',
127 'chrome/renderer/safe_browsing/scorer.h',
128 'content/content.gyp',
129 'content/bar/foo.cc',
130 'content/baz/ugly.cc',
131 'content/baz/ugly.h'
132 })
133 self.assertEquals(finder.selected_owners, set())
M-A Ruel 2013/04/24 01:32:20 assertEquals is deprecated, use assertEqual.
Bei Zhang 2013/04/24 03:29:02 Done.
134 self.assertEquals(finder.deselected_owners, set())
135 self.assertEquals(finder.reviewed_by, {})
136 self.assertEquals(finder.output, '')
137
138 def test_select(self):
139 finder = self.defaultFinder()
140 finder.select_owner(john)
141 self.assertEquals(finder.owners_queue, [brett, peter, ken, tom, ben])
142 self.assertEquals(finder.selected_owners, {john})
143 self.assertEquals(finder.deselected_owners, {darin})
144 self.assertEquals(finder.reviewed_by, {'content/bar/foo.cc': john,
145 'content/baz/ugly.cc': john,
146 'content/baz/ugly.h': john,
147 'content/content.gyp': john})
148 self.assertEquals(finder.output,
149 'Selected: john@example.com\n'
150 'Deselected: darin@example.com\n')
151
152 finder = self.defaultFinder()
153 finder.select_owner(darin)
154 self.assertEquals(finder.owners_queue, [brett, peter, ken, tom, ben])
155 self.assertEquals(finder.selected_owners, {darin})
156 self.assertEquals(finder.deselected_owners, {john})
157 self.assertEquals(finder.reviewed_by, {'content/bar/foo.cc': darin,
158 'content/baz/ugly.cc': darin,
159 'content/baz/ugly.h': darin,
160 'content/content.gyp': darin})
161 self.assertEquals(finder.output,
162 'Selected: darin@example.com\n'
163 'Deselected: john@example.com\n')
164
165 finder = self.defaultFinder()
166 finder.select_owner(brett)
167 self.assertEquals(finder.owners_queue, [peter, ken, tom, john, darin])
168 self.assertEquals(finder.selected_owners, {brett})
169 self.assertEquals(finder.deselected_owners, {ben})
170 self.assertEquals(finder.reviewed_by,
171 {'chrome/browser/defaults.h': brett,
172 'chrome/gpu/gpu_channel.h': brett,
173 'chrome/renderer/gpu/gpu_channel_host.h': brett,
174 'chrome/renderer/safe_browsing/scorer.h': brett,
175 'content/baz/ugly.cc': brett,
176 'content/baz/ugly.h': brett})
177 self.assertEquals(finder.output,
178 'Selected: brett@example.com\n'
179 'Deselected: ben@example.com\n')
180
181 def test_deselect(self):
182 finder = self.defaultFinder()
183 finder.deselect_owner(john)
184 self.assertEquals(finder.owners_queue, [brett, peter, ken, tom, ben])
185 self.assertEquals(finder.selected_owners, {darin})
186 self.assertEquals(finder.deselected_owners, {john})
187 self.assertEquals(finder.reviewed_by, {'content/bar/foo.cc': darin,
188 'content/baz/ugly.cc': darin,
189 'content/baz/ugly.h': darin,
190 'content/content.gyp': darin})
191 self.assertEquals(finder.output,
192 'Deselected: john@example.com\n'
193 'Selected: darin@example.com\n')
194
195 def test_print_file_info(self):
196 finder = self.defaultFinder()
197 finder.print_file_info('chrome/browser/defaults.h')
198 self.assertEquals(finder.output, '{chrome/browser/defaults.h [5]\n}')
199 finder.resetText()
200
201 finder.print_file_info('chrome/renderer/gpu/gpu_channel_host.h')
202 self.assertEquals(finder.output,
203 '{chrome/renderer/gpu/gpu_channel_host.h [5]\n}')
204
205 def test_print_file_info_detailed(self):
206 finder = self.defaultFinder()
207 finder.print_file_info_detailed('chrome/browser/defaults.h')
208 self.assertEquals(finder.output,
209 'chrome/browser/defaults.h\n'
210 '{ben@example.com\n'
211 'brett@example.com\n'
212 'ken@example.com\n'
213 'peter@example.com\n'
214 'tom@example.com\n}')
215 finder.resetText()
216
217 finder.print_file_info_detailed('chrome/renderer/gpu/gpu_channel_host.h')
218 self.assertEquals(finder.output,
219 'chrome/renderer/gpu/gpu_channel_host.h\n'
220 '{ben@example.com\n'
221 'brett@example.com\n'
222 'ken@example.com\n'
223 'peter@example.com\n'
224 'tom@example.com\n}')
225
226 def test_print_comments(self):
227 finder = self.defaultFinder()
228 finder.print_comments(darin)
229 self.assertEquals(finder.output,
230 'darin@example.com is commented as:\n'
231 '{foo (at content)\n}')
232
233
234 if __name__ == '__main__':
235 unittest.main()
OLDNEW
« owners_finder.py ('K') | « owners_finder.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698