OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 # Copyright (c) 2010 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2010 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_support.py and presubmit_canned_checks.py.""" | 6 """Unit tests for presubmit_support.py and presubmit_canned_checks.py.""" |
7 | 7 |
8 import StringIO | 8 import StringIO |
9 | 9 |
10 # Fixes include path. | 10 # Fixes include path. |
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
334 presubmit.random.randint(0, 4).AndReturn(1) | 334 presubmit.random.randint(0, 4).AndReturn(1) |
335 self.mox.ReplayAll() | 335 self.mox.ReplayAll() |
336 | 336 |
337 output = StringIO.StringIO() | 337 output = StringIO.StringIO() |
338 input = StringIO.StringIO('y\n') | 338 input = StringIO.StringIO('y\n') |
339 change = presubmit.Change('mychange', '\n'.join(description_lines), | 339 change = presubmit.Change('mychange', '\n'.join(description_lines), |
340 self.fake_root_dir, files, 0, 0) | 340 self.fake_root_dir, files, 0, 0) |
341 self.failIf(presubmit.DoPresubmitChecks(change, False, True, output, input, | 341 self.failIf(presubmit.DoPresubmitChecks(change, False, True, output, input, |
342 None, False)) | 342 None, False)) |
343 self.assertEqual(output.getvalue().count('!!'), 2) | 343 self.assertEqual(output.getvalue().count('!!'), 2) |
| 344 self.checkstdout('Running presubmit hooks...\n') |
344 | 345 |
345 def testDoPresubmitChecksPromptsAfterWarnings(self): | 346 def testDoPresubmitChecksPromptsAfterWarnings(self): |
346 join = presubmit.os.path.join | 347 join = presubmit.os.path.join |
347 description_lines = ('Hello there', | 348 description_lines = ('Hello there', |
348 'this is a change', | 349 'this is a change', |
349 'NOSUCHKEY=http://tracker/123') | 350 'NOSUCHKEY=http://tracker/123') |
350 files = [ | 351 files = [ |
351 ['A', join('haspresubmit', 'blat.cc')], | 352 ['A', join('haspresubmit', 'blat.cc')], |
352 ] | 353 ] |
353 presubmit_path = join(self.fake_root_dir, 'PRESUBMIT.py') | 354 presubmit_path = join(self.fake_root_dir, 'PRESUBMIT.py') |
(...skipping 18 matching lines...) Expand all Loading... |
372 self.fake_root_dir, files, 0, 0) | 373 self.fake_root_dir, files, 0, 0) |
373 self.failIf(presubmit.DoPresubmitChecks(change, False, True, output, input, | 374 self.failIf(presubmit.DoPresubmitChecks(change, False, True, output, input, |
374 None, True)) | 375 None, True)) |
375 self.assertEqual(output.getvalue().count('??'), 2) | 376 self.assertEqual(output.getvalue().count('??'), 2) |
376 | 377 |
377 output = StringIO.StringIO() | 378 output = StringIO.StringIO() |
378 input = StringIO.StringIO('y\n') # say yes to the warning | 379 input = StringIO.StringIO('y\n') # say yes to the warning |
379 self.failUnless(presubmit.DoPresubmitChecks(change, False, True, output, | 380 self.failUnless(presubmit.DoPresubmitChecks(change, False, True, output, |
380 input, None, True)) | 381 input, None, True)) |
381 self.assertEquals(output.getvalue().count('??'), 2) | 382 self.assertEquals(output.getvalue().count('??'), 2) |
| 383 self.checkstdout('Running presubmit hooks...\nRunning presubmit hooks...\n') |
382 | 384 |
383 def testDoPresubmitChecksNoWarningPromptIfErrors(self): | 385 def testDoPresubmitChecksNoWarningPromptIfErrors(self): |
384 join = presubmit.os.path.join | 386 join = presubmit.os.path.join |
385 description_lines = ('Hello there', | 387 description_lines = ('Hello there', |
386 'this is a change', | 388 'this is a change', |
387 'NOSUCHKEY=http://tracker/123', | 389 'NOSUCHKEY=http://tracker/123', |
388 'REALLYNOSUCHKEY=http://tracker/123') | 390 'REALLYNOSUCHKEY=http://tracker/123') |
389 files = [ | 391 files = [ |
390 ['A', join('haspresubmit', 'blat.cc')], | 392 ['A', join('haspresubmit', 'blat.cc')], |
391 ] | 393 ] |
(...skipping 14 matching lines...) Expand all Loading... |
406 | 408 |
407 output = StringIO.StringIO() | 409 output = StringIO.StringIO() |
408 input = StringIO.StringIO() # should be unused | 410 input = StringIO.StringIO() # should be unused |
409 change = presubmit.Change('mychange', '\n'.join(description_lines), | 411 change = presubmit.Change('mychange', '\n'.join(description_lines), |
410 self.fake_root_dir, files, 0, 0) | 412 self.fake_root_dir, files, 0, 0) |
411 self.failIf(presubmit.DoPresubmitChecks(change, False, True, output, input, | 413 self.failIf(presubmit.DoPresubmitChecks(change, False, True, output, input, |
412 None, False)) | 414 None, False)) |
413 self.assertEqual(output.getvalue().count('??'), 2) | 415 self.assertEqual(output.getvalue().count('??'), 2) |
414 self.assertEqual(output.getvalue().count('XX!!XX'), 2) | 416 self.assertEqual(output.getvalue().count('XX!!XX'), 2) |
415 self.assertEqual(output.getvalue().count('(y/N)'), 0) | 417 self.assertEqual(output.getvalue().count('(y/N)'), 0) |
| 418 self.checkstdout('Running presubmit hooks...\n') |
416 | 419 |
417 def testDoDefaultPresubmitChecksAndFeedback(self): | 420 def testDoDefaultPresubmitChecksAndFeedback(self): |
418 join = presubmit.os.path.join | 421 join = presubmit.os.path.join |
419 description_lines = ('Hello there', | 422 description_lines = ('Hello there', |
420 'this is a change', | 423 'this is a change', |
421 'STORY=http://tracker/123') | 424 'STORY=http://tracker/123') |
422 files = [ | 425 files = [ |
423 ['A', join('haspresubmit', 'blat.cc')], | 426 ['A', join('haspresubmit', 'blat.cc')], |
424 ] | 427 ] |
425 DEFAULT_SCRIPT = """ | 428 DEFAULT_SCRIPT = """ |
(...skipping 19 matching lines...) Expand all Loading... |
445 change = presubmit.Change('mychange', '\n'.join(description_lines), | 448 change = presubmit.Change('mychange', '\n'.join(description_lines), |
446 self.fake_root_dir, files, 0, 0) | 449 self.fake_root_dir, files, 0, 0) |
447 self.failIf(presubmit.DoPresubmitChecks(change, False, True, output, input, | 450 self.failIf(presubmit.DoPresubmitChecks(change, False, True, output, input, |
448 DEFAULT_SCRIPT, False)) | 451 DEFAULT_SCRIPT, False)) |
449 text = ('Warning, no presubmit.py found.\n' | 452 text = ('Warning, no presubmit.py found.\n' |
450 'Running default presubmit script.\n' | 453 'Running default presubmit script.\n' |
451 '** Presubmit ERRORS **\n!!\n\n' | 454 '** Presubmit ERRORS **\n!!\n\n' |
452 'Was the presubmit check useful? Please send feedback & hate mail ' | 455 'Was the presubmit check useful? Please send feedback & hate mail ' |
453 'to maruel@chromium.org!\n') | 456 'to maruel@chromium.org!\n') |
454 self.assertEquals(output.getvalue(), text) | 457 self.assertEquals(output.getvalue(), text) |
| 458 self.checkstdout('Running presubmit hooks...\n') |
455 | 459 |
456 def testDirectoryHandling(self): | 460 def testDirectoryHandling(self): |
457 files = [ | 461 files = [ |
458 ['A', 'isdir'], | 462 ['A', 'isdir'], |
459 ['A', presubmit.os.path.join('isdir', 'blat.cc')], | 463 ['A', presubmit.os.path.join('isdir', 'blat.cc')], |
460 ] | 464 ] |
461 isdir = presubmit.os.path.join(self.fake_root_dir, 'isdir') | 465 isdir = presubmit.os.path.join(self.fake_root_dir, 'isdir') |
462 blat = presubmit.os.path.join(isdir, 'blat.cc') | 466 blat = presubmit.os.path.join(isdir, 'blat.cc') |
463 presubmit.os.path.exists(isdir).AndReturn(True) | 467 presubmit.os.path.exists(isdir).AndReturn(True) |
464 presubmit.os.path.isdir(isdir).AndReturn(True) | 468 presubmit.os.path.isdir(isdir).AndReturn(True) |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
516 change = presubmit.Change( | 520 change = presubmit.Change( |
517 'foo', "Blah Blah\n\nSTORY=http://tracker.com/42\nBUG=boo\n", | 521 'foo', "Blah Blah\n\nSTORY=http://tracker.com/42\nBUG=boo\n", |
518 self.fake_root_dir, None, 0, 0) | 522 self.fake_root_dir, None, 0, 0) |
519 self.failUnless(presubmit.DoPresubmitChecks(change, False, True, output, | 523 self.failUnless(presubmit.DoPresubmitChecks(change, False, True, output, |
520 input, DEFAULT_SCRIPT, False)) | 524 input, DEFAULT_SCRIPT, False)) |
521 self.assertEquals(output.getvalue(), | 525 self.assertEquals(output.getvalue(), |
522 ('Warning, no presubmit.py found.\n' | 526 ('Warning, no presubmit.py found.\n' |
523 'Running default presubmit script.\n' | 527 'Running default presubmit script.\n' |
524 '** Presubmit Messages **\n' | 528 '** Presubmit Messages **\n' |
525 'http://tracker.com/42\n\n')) | 529 'http://tracker.com/42\n\n')) |
| 530 self.checkstdout('Running presubmit hooks...\n') |
526 | 531 |
527 def testGetTrySlavesExecuter(self): | 532 def testGetTrySlavesExecuter(self): |
528 self.mox.ReplayAll() | 533 self.mox.ReplayAll() |
529 | 534 |
530 executer = presubmit.GetTrySlavesExecuter() | 535 executer = presubmit.GetTrySlavesExecuter() |
531 self.assertEqual([], executer.ExecPresubmitScript('')) | 536 self.assertEqual([], executer.ExecPresubmitScript('')) |
532 self.assertEqual([], executer.ExecPresubmitScript('def foo():\n return\n')) | 537 self.assertEqual([], executer.ExecPresubmitScript('def foo():\n return\n')) |
533 | 538 |
534 # bad results | 539 # bad results |
535 starts_with_space_result = [' starts_with_space'] | 540 starts_with_space_result = [' starts_with_space'] |
(...skipping 1198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1734 results = presubmit_canned_checks.CheckBuildbotPendingBuilds( | 1739 results = presubmit_canned_checks.CheckBuildbotPendingBuilds( |
1735 input_api, presubmit.OutputApi, 'uurl', 2, ('foo')) | 1740 input_api, presubmit.OutputApi, 'uurl', 2, ('foo')) |
1736 self.assertEquals(len(results), 1) | 1741 self.assertEquals(len(results), 1) |
1737 self.assertEquals(results[0].__class__, | 1742 self.assertEquals(results[0].__class__, |
1738 presubmit.OutputApi.PresubmitNotifyResult) | 1743 presubmit.OutputApi.PresubmitNotifyResult) |
1739 | 1744 |
1740 | 1745 |
1741 if __name__ == '__main__': | 1746 if __name__ == '__main__': |
1742 import unittest | 1747 import unittest |
1743 unittest.main() | 1748 unittest.main() |
OLD | NEW |