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

Side by Side Diff: depot_tools/tests/presubmit_unittest.py

Issue 100055: When I copied presubmit_unittest.py, I picked the old one. Fix with the lates... (Closed) Base URL: svn://chrome-svn.corp.google.com/chrome/trunk/tools/
Patch Set: Created 11 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
« no previous file with comments | « no previous file | 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) 2006-2009 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2006-2009 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 presubmit.py and presubmit_canned_checks.py.""" 6 """Unit tests for presubmit.py and presubmit_canned_checks.py."""
7 7
8 import os 8 import os
9 import StringIO 9 import StringIO
10 import unittest 10 import unittest
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
53 gcl.GetSVNFileProperty = MockGetSVNFileProperty 53 gcl.GetSVNFileProperty = MockGetSVNFileProperty
54 54
55 self.original_ReadFile = gcl.ReadFile 55 self.original_ReadFile = gcl.ReadFile
56 def MockReadFile(path): 56 def MockReadFile(path):
57 if path.count('nosuchfile'): 57 if path.count('nosuchfile'):
58 return None 58 return None
59 elif path.endswith('isdir'): 59 elif path.endswith('isdir'):
60 self.fail('Should not attempt to read file that is directory.') 60 self.fail('Should not attempt to read file that is directory.')
61 elif path.endswith('PRESUBMIT.py'): 61 elif path.endswith('PRESUBMIT.py'):
62 # used in testDoPresubmitChecks 62 # used in testDoPresubmitChecks
63 return """ 63 return ('def CheckChangeOnUpload(input_api, output_api):\n'
64 def CheckChangeOnUpload(input_api, output_api): 64 ' if not input_api.change.NOSUCHKEY:\n'
65 if not input_api.change.NOSUCHKEY: 65 ' return [output_api.PresubmitError("!!")]\n'
66 return [output_api.PresubmitError("!!")] 66 ' elif not input_api.change.REALLYNOSUCHKEY:\n'
67 elif not input_api.change.REALLYNOSUCHKEY: 67 ' return [output_api.PresubmitPromptWarning("??")]\n'
68 return [output_api.PresubmitPromptWarning("??")] 68 ' elif not input_api.change.REALLYABSOLUTELYNOSUCHKEY:\n'
69 elif not input_api.change.REALLYABSOLUTELYNOSUCHKEY: 69 ' return [output_api.PresubmitPromptWarning("??"),\n'
70 return [output_api.PresubmitPromptWarning("??"), 70 ' output_api.PresubmitError("XX!!XX")]\n'
71 output_api.PresubmitError("XX!!XX")] 71 ' else:\n'
72 else: 72 ' return ()')
73 return ()
74 """
75 else: 73 else:
76 return 'one:%s\r\ntwo:%s' % (path, path) 74 return 'one:%s\r\ntwo:%s' % (path, path)
77 gcl.ReadFile = MockReadFile 75 gcl.ReadFile = MockReadFile
78 76
79 self.original_GetRepositoryRoot = gcl.GetRepositoryRoot 77 self.original_GetRepositoryRoot = gcl.GetRepositoryRoot
80 def MockGetRepositoryRoot(): 78 def MockGetRepositoryRoot():
81 return '' 79 return ''
82 gcl.GetRepositoryRoot = MockGetRepositoryRoot 80 gcl.GetRepositoryRoot = MockGetRepositoryRoot
83 81
84 def tearDown(self): 82 def tearDown(self):
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
293 files = [ 291 files = [
294 ['A', 'haspresubmit\\blat.cc'], 292 ['A', 'haspresubmit\\blat.cc'],
295 ] 293 ]
296 ci = gcl.ChangeInfo(name='mychange', 294 ci = gcl.ChangeInfo(name='mychange',
297 description='\n'.join(description_lines), 295 description='\n'.join(description_lines),
298 files=files) 296 files=files)
299 297
300 output = StringIO.StringIO() 298 output = StringIO.StringIO()
301 input = StringIO.StringIO('y\n') 299 input = StringIO.StringIO('y\n')
302 300
303 self.failIf(presubmit.DoPresubmitChecks(ci, False, False, output, input, 301 self.failIf(presubmit.DoPresubmitChecks(ci, False, False, output, input))
304 None)) 302 self.failUnless(output.getvalue().count('!!'))
305 self.assertEqual(output.getvalue().count('!!'), 2)
306 303
307 def testDoPresubmitChecksPromptsAfterWarnings(self): 304 def testDoPresubmitChecksPromptsAfterWarnings(self):
308 description_lines = ('Hello there', 305 description_lines = ('Hello there',
309 'this is a change', 306 'this is a change',
310 'NOSUCHKEY=http://tracker/123') 307 'NOSUCHKEY=http://tracker/123')
311 files = [ 308 files = [
312 ['A', 'haspresubmit\\blat.cc'], 309 ['A', 'haspresubmit\\blat.cc'],
313 ] 310 ]
314 ci = gcl.ChangeInfo(name='mychange', 311 ci = gcl.ChangeInfo(name='mychange',
315 description='\n'.join(description_lines), 312 description='\n'.join(description_lines),
316 files=files) 313 files=files)
317 314
318 output = StringIO.StringIO() 315 output = StringIO.StringIO()
319 input = StringIO.StringIO('n\n') # say no to the warning 316 input = StringIO.StringIO('n\n') # say no to the warning
320 317
321 self.failIf(presubmit.DoPresubmitChecks(ci, False, False, output, input, 318 self.failIf(presubmit.DoPresubmitChecks(ci, False, False, output, input))
322 None)) 319 self.failUnless(output.getvalue().count('??'))
323 self.assertEqual(output.getvalue().count('??'), 2)
324 320
325 output = StringIO.StringIO() 321 output = StringIO.StringIO()
326 input = StringIO.StringIO('y\n') # say yes to the warning 322 input = StringIO.StringIO('y\n') # say yes to the warning
327 323
328 self.failUnless(presubmit.DoPresubmitChecks(ci, 324 self.failUnless(presubmit.DoPresubmitChecks(ci,
329 False, 325 False,
330 False, 326 False,
331 output, 327 output,
332 input, 328 input))
333 None))
334 self.failUnless(output.getvalue().count('??')) 329 self.failUnless(output.getvalue().count('??'))
335 330
336 def testDoPresubmitChecksNoWarningPromptIfErrors(self): 331 def testDoPresubmitChecksNoWarningPromptIfErrors(self):
337 description_lines = ('Hello there', 332 description_lines = ('Hello there',
338 'this is a change', 333 'this is a change',
339 'NOSUCHKEY=http://tracker/123', 334 'NOSUCHKEY=http://tracker/123',
340 'REALLYNOSUCHKEY=http://tracker/123') 335 'REALLYNOSUCHKEY=http://tracker/123')
341 files = [ 336 files = [
342 ['A', 'haspresubmit\\blat.cc'], 337 ['A', 'haspresubmit\\blat.cc'],
343 ] 338 ]
344 ci = gcl.ChangeInfo(name='mychange', 339 ci = gcl.ChangeInfo(name='mychange',
345 description='\n'.join(description_lines), 340 description='\n'.join(description_lines),
346 files=files) 341 files=files)
347 342
348 output = StringIO.StringIO() 343 output = StringIO.StringIO()
349 input = StringIO.StringIO() # should be unused 344 input = StringIO.StringIO() # should be unused
350 345
351 self.failIf(presubmit.DoPresubmitChecks(ci, False, False, output, input, 346 self.failIf(presubmit.DoPresubmitChecks(ci, False, False, output, input))
352 None)) 347 self.failUnless(output.getvalue().count('??'))
353 self.assertEqual(output.getvalue().count('??'), 2) 348 self.failUnless(output.getvalue().count('XX!!XX'))
354 self.assertEqual(output.getvalue().count('XX!!XX'), 2) 349 self.failIf(output.getvalue().count('(y/N)'))
355 self.assertEqual(output.getvalue().count('(y/N)'), 0)
356
357 def testDoDefaultPresubmitChecks(self):
358 description_lines = ('Hello there',
359 'this is a change',
360 'STORY=http://tracker/123')
361 files = [
362 ['A', 'haspresubmit\\blat.cc'],
363 ]
364 ci = gcl.ChangeInfo(name='mychange',
365 description='\n'.join(description_lines),
366 files=files)
367
368 output = StringIO.StringIO()
369 input = StringIO.StringIO('y\n')
370 DEFAULT_SCRIPT = """
371 def CheckChangeOnUpload(input_api, output_api):
372 return [output_api.PresubmitError("!!")]
373 """
374 def MockReadFile(dummy):
375 return ''
376 gcl.ReadFile = MockReadFile
377 def MockIsFile(dummy):
378 return False
379 os.path.isfile = MockIsFile
380 self.failUnless(presubmit.DoPresubmitChecks(ci, False, False, output, input,
381 DEFAULT_SCRIPT))
382 self.failIf(output.getvalue().count('!!') == 1)
383 350
384 def testDirectoryHandling(self): 351 def testDirectoryHandling(self):
385 files = [ 352 files = [
386 ['A', 'isdir'], 353 ['A', 'isdir'],
387 ['A', 'isdir\\blat.cc'], 354 ['A', 'isdir\\blat.cc'],
388 ] 355 ]
389 ci = gcl.ChangeInfo(name='mychange', 356 ci = gcl.ChangeInfo(name='mychange',
390 description='foo', 357 description='foo',
391 files=files) 358 files=files)
392 change = presubmit.GclChange(ci) 359 change = presubmit.GclChange(ci)
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
690 self.failIf(presubmit_canned_checks.CheckTreeIsOpen( 657 self.failIf(presubmit_canned_checks.CheckTreeIsOpen(
691 self.MockInputApi(), presubmit.OutputApi, url='url_to_open', closed='0' 658 self.MockInputApi(), presubmit.OutputApi, url='url_to_open', closed='0'
692 )) 659 ))
693 self.failUnless(presubmit_canned_checks.CheckTreeIsOpen( 660 self.failUnless(presubmit_canned_checks.CheckTreeIsOpen(
694 self.MockInputApi(), presubmit.OutputApi, url='url_to_closed', closed='0' 661 self.MockInputApi(), presubmit.OutputApi, url='url_to_closed', closed='0'
695 )) 662 ))
696 663
697 664
698 if __name__ == '__main__': 665 if __name__ == '__main__':
699 unittest.main() 666 unittest.main()
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698