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

Side by Side Diff: tests/owners_unittest.py

Issue 6677090: Fix the owners implementation to validate method inputs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools/
Patch Set: '' 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 unified diff | Download patch | Annotate | Revision Log
« owners.py ('K') | « owners.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
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 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 91
92 def test_not_covered_by__partial_covering(self): 92 def test_not_covered_by__partial_covering(self):
93 self.assert_not_covered_by( 93 self.assert_not_covered_by(
94 ['content/content.gyp', 'chrome/renderer/gpu/gpu_channel_host.h'], 94 ['content/content.gyp', 'chrome/renderer/gpu/gpu_channel_host.h'],
95 [peter], ['content/content.gyp']) 95 [peter], ['content/content.gyp'])
96 96
97 def test_not_covered_by__set_noparent_works(self): 97 def test_not_covered_by__set_noparent_works(self):
98 self.assert_not_covered_by(['content/content.gyp'], [ben], 98 self.assert_not_covered_by(['content/content.gyp'], [ben],
99 ['content/content.gyp']) 99 ['content/content.gyp'])
100 100
101 def test_not_covered_by__valid_inputs(self):
102 db = self.db()
103
104 # Check that we're passed in a sequence that isn't a string.
105 self.assertRaises(AssertionError, db.files_not_covered_by, 'foo', [])
106 self.assertRaises(AssertionError, db.files_not_covered_by,
107 (f for f in ['x', 'y']), [])
108
109 # Check that the files are under the root.
110 db.root = '/checkout'
111 self.assertRaises(AssertionError, db.files_not_covered_by, ['/OWNERS'],
112 [])
113 db.root = '/'
114
115 # Check invalid email address.
116 self.assertRaises(AssertionError, db.files_not_covered_by, ['OWNERS'],
117 ['foo'])
118
119
101 def assert_reviewers_for(self, files, expected_reviewers): 120 def assert_reviewers_for(self, files, expected_reviewers):
102 db = self.db() 121 db = self.db()
103 self.assertEquals(db.reviewers_for(set(files)), set(expected_reviewers)) 122 self.assertEquals(db.reviewers_for(set(files)), set(expected_reviewers))
104 123
105 def test_reviewers_for__basic_functionality(self): 124 def test_reviewers_for__basic_functionality(self):
106 self.assert_reviewers_for(['chrome/gpu/gpu_channel.h'], 125 self.assert_reviewers_for(['chrome/gpu/gpu_channel.h'],
107 [ken, ben, brett, owners.EVERYONE]) 126 [ken, ben, brett, owners.EVERYONE])
108 127
109 def test_reviewers_for__set_noparent_works(self): 128 def test_reviewers_for__set_noparent_works(self):
110 self.assert_reviewers_for(['content/content.gyp'], [john, darin]) 129 self.assert_reviewers_for(['content/content.gyp'], [john, darin])
111 130
131 def test_reviewers_for__valid_inputs(self):
132 db = self.db()
133
134 # Check that we're passed in a sequence that isn't a string.
135 self.assertRaises(AssertionError, db.reviewers_for, 'foo')
136 self.assertRaises(AssertionError, db.reviewers_for, (f for f in ['x', 'y']))
137
138 # Check that the files are under the root.
139 db.root = '/checkout'
140 self.assertRaises(AssertionError, db.reviewers_for, ['/OWNERS'])
141
112 def test_reviewers_for__wildcard_dir(self): 142 def test_reviewers_for__wildcard_dir(self):
113 self.assert_reviewers_for(['DEPS'], [owners.EVERYONE]) 143 self.assert_reviewers_for(['DEPS'], [owners.EVERYONE])
114 144
115 def assert_syntax_error(self, owners_file_contents): 145 def assert_syntax_error(self, owners_file_contents):
116 db = self.db() 146 db = self.db()
117 self.files['/foo/OWNERS'] = owners_file_contents 147 self.files['/foo/OWNERS'] = owners_file_contents
118 self.files['/foo/DEPS'] = '' 148 self.files['/foo/DEPS'] = ''
119 try: 149 try:
120 db.reviewers_for(['/foo/DEPS']) 150 db.reviewers_for(['/foo/DEPS'])
121 self.fail() # pragma: no cover 151 self.fail() # pragma: no cover
122 except owners.SyntaxErrorInOwnersFile, e: 152 except owners.SyntaxErrorInOwnersFile, e:
123 self.assertTrue(str(e).startswith('/foo/OWNERS:1')) 153 self.assertTrue(str(e).startswith('/foo/OWNERS:1'))
124 154
125 def test_syntax_error__unknown_token(self): 155 def test_syntax_error__unknown_token(self):
126 self.assert_syntax_error('{}\n') 156 self.assert_syntax_error('{}\n')
127 157
128 def test_syntax_error__unknown_set(self): 158 def test_syntax_error__unknown_set(self):
129 self.assert_syntax_error('set myfatherisbillgates\n') 159 self.assert_syntax_error('set myfatherisbillgates\n')
130 160
131 def test_syntax_error__bad_email(self): 161 def test_syntax_error__bad_email(self):
132 self.assert_syntax_error('ben\n') 162 self.assert_syntax_error('ben\n')
133 163
134 164
135 if __name__ == '__main__': 165 if __name__ == '__main__':
136 unittest.main() 166 unittest.main()
OLDNEW
« owners.py ('K') | « owners.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698