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 # pylint is too confused. | 8 # pylint is too confused. |
9 # pylint: disable=E1101,E1103,W0212,W0403 | 9 # pylint: disable=E1101,E1103,W0212,W0403 |
10 | 10 |
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
413 presubmit.random.randint(0, 4).AndReturn(1) | 413 presubmit.random.randint(0, 4).AndReturn(1) |
414 self.mox.ReplayAll() | 414 self.mox.ReplayAll() |
415 | 415 |
416 input_buf = StringIO.StringIO('y\n') | 416 input_buf = StringIO.StringIO('y\n') |
417 change = presubmit.Change('mychange', '\n'.join(description_lines), | 417 change = presubmit.Change('mychange', '\n'.join(description_lines), |
418 self.fake_root_dir, files, 0, 0) | 418 self.fake_root_dir, files, 0, 0) |
419 output = presubmit.DoPresubmitChecks( | 419 output = presubmit.DoPresubmitChecks( |
420 change, False, True, None, input_buf, None, False) | 420 change, False, True, None, input_buf, None, False) |
421 self.failIf(output.should_continue()) | 421 self.failIf(output.should_continue()) |
422 self.assertEqual(output.getvalue().count('!!'), 2) | 422 self.assertEqual(output.getvalue().count('!!'), 2) |
423 self.assertEqual(output.getvalue().count('Running presubmit hooks...\n'), 1) | 423 self.assertEqual(output.getvalue().count( |
| 424 'Running presubmit upload checks ...\n'), 1) |
424 | 425 |
425 def testDoPresubmitChecksPromptsAfterWarnings(self): | 426 def testDoPresubmitChecksPromptsAfterWarnings(self): |
426 join = presubmit.os.path.join | 427 join = presubmit.os.path.join |
427 description_lines = ('Hello there', | 428 description_lines = ('Hello there', |
428 'this is a change', | 429 'this is a change', |
429 'NOSUCHKEY=http://tracker/123') | 430 'NOSUCHKEY=http://tracker/123') |
430 files = [ | 431 files = [ |
431 ['A', join('haspresubmit', 'blat.cc')], | 432 ['A', join('haspresubmit', 'blat.cc')], |
432 ] | 433 ] |
433 presubmit_path = join(self.fake_root_dir, 'PRESUBMIT.py') | 434 presubmit_path = join(self.fake_root_dir, 'PRESUBMIT.py') |
(...skipping 18 matching lines...) Expand all Loading... |
452 output = presubmit.DoPresubmitChecks( | 453 output = presubmit.DoPresubmitChecks( |
453 change, False, True, None, input_buf, None, True) | 454 change, False, True, None, input_buf, None, True) |
454 self.failIf(output.should_continue()) | 455 self.failIf(output.should_continue()) |
455 self.assertEqual(output.getvalue().count('??'), 2) | 456 self.assertEqual(output.getvalue().count('??'), 2) |
456 | 457 |
457 input_buf = StringIO.StringIO('y\n') # say yes to the warning | 458 input_buf = StringIO.StringIO('y\n') # say yes to the warning |
458 output = presubmit.DoPresubmitChecks( | 459 output = presubmit.DoPresubmitChecks( |
459 change, False, True, None, input_buf, None, True) | 460 change, False, True, None, input_buf, None, True) |
460 self.failUnless(output.should_continue()) | 461 self.failUnless(output.should_continue()) |
461 self.assertEquals(output.getvalue().count('??'), 2) | 462 self.assertEquals(output.getvalue().count('??'), 2) |
462 self.assertEqual(output.getvalue().count('Running presubmit hooks...\n'), 1) | 463 self.assertEqual(output.getvalue().count( |
| 464 'Running presubmit upload checks ...\n'), 1) |
463 | 465 |
464 def testDoPresubmitChecksNoWarningPromptIfErrors(self): | 466 def testDoPresubmitChecksNoWarningPromptIfErrors(self): |
465 join = presubmit.os.path.join | 467 join = presubmit.os.path.join |
466 description_lines = ('Hello there', | 468 description_lines = ('Hello there', |
467 'this is a change', | 469 'this is a change', |
468 'NOSUCHKEY=http://tracker/123', | 470 'NOSUCHKEY=http://tracker/123', |
469 'REALLYNOSUCHKEY=http://tracker/123') | 471 'REALLYNOSUCHKEY=http://tracker/123') |
470 files = [ | 472 files = [ |
471 ['A', join('haspresubmit', 'blat.cc')], | 473 ['A', join('haspresubmit', 'blat.cc')], |
472 ] | 474 ] |
(...skipping 12 matching lines...) Expand all Loading... |
485 presubmit.random.randint(0, 4).AndReturn(1) | 487 presubmit.random.randint(0, 4).AndReturn(1) |
486 self.mox.ReplayAll() | 488 self.mox.ReplayAll() |
487 | 489 |
488 change = presubmit.Change('mychange', '\n'.join(description_lines), | 490 change = presubmit.Change('mychange', '\n'.join(description_lines), |
489 self.fake_root_dir, files, 0, 0) | 491 self.fake_root_dir, files, 0, 0) |
490 output = presubmit.DoPresubmitChecks(change, False, True, None, None, | 492 output = presubmit.DoPresubmitChecks(change, False, True, None, None, |
491 None, False) | 493 None, False) |
492 self.assertEqual(output.getvalue().count('??'), 2) | 494 self.assertEqual(output.getvalue().count('??'), 2) |
493 self.assertEqual(output.getvalue().count('XX!!XX'), 2) | 495 self.assertEqual(output.getvalue().count('XX!!XX'), 2) |
494 self.assertEqual(output.getvalue().count('(y/N)'), 0) | 496 self.assertEqual(output.getvalue().count('(y/N)'), 0) |
495 self.assertEqual(output.getvalue().count('Running presubmit hooks...\n'), 1) | 497 self.assertEqual(output.getvalue().count( |
| 498 'Running presubmit upload checks ...\n'), 1) |
496 | 499 |
497 def testDoDefaultPresubmitChecksAndFeedback(self): | 500 def testDoDefaultPresubmitChecksAndFeedback(self): |
498 join = presubmit.os.path.join | 501 join = presubmit.os.path.join |
499 description_lines = ('Hello there', | 502 description_lines = ('Hello there', |
500 'this is a change', | 503 'this is a change', |
501 'STORY=http://tracker/123') | 504 'STORY=http://tracker/123') |
502 files = [ | 505 files = [ |
503 ['A', join('haspresubmit', 'blat.cc')], | 506 ['A', join('haspresubmit', 'blat.cc')], |
504 ] | 507 ] |
505 DEFAULT_SCRIPT = """ | 508 DEFAULT_SCRIPT = """ |
(...skipping 13 matching lines...) Expand all Loading... |
519 presubmit.random.randint(0, 4).AndReturn(0) | 522 presubmit.random.randint(0, 4).AndReturn(0) |
520 self.mox.ReplayAll() | 523 self.mox.ReplayAll() |
521 | 524 |
522 input_buf = StringIO.StringIO('y\n') | 525 input_buf = StringIO.StringIO('y\n') |
523 # Always fail. | 526 # Always fail. |
524 change = presubmit.Change('mychange', '\n'.join(description_lines), | 527 change = presubmit.Change('mychange', '\n'.join(description_lines), |
525 self.fake_root_dir, files, 0, 0) | 528 self.fake_root_dir, files, 0, 0) |
526 output = presubmit.DoPresubmitChecks( | 529 output = presubmit.DoPresubmitChecks( |
527 change, False, True, None, input_buf, DEFAULT_SCRIPT, False) | 530 change, False, True, None, input_buf, DEFAULT_SCRIPT, False) |
528 self.failIf(output.should_continue()) | 531 self.failIf(output.should_continue()) |
529 text = ('Running presubmit hooks...\n' | 532 text = ('Running presubmit upload checks ...\n' |
530 'Warning, no presubmit.py found.\n' | 533 'Warning, no presubmit.py found.\n' |
531 'Running default presubmit script.\n' | 534 'Running default presubmit script.\n' |
| 535 '\n' |
532 '** Presubmit ERRORS **\n!!\n\n' | 536 '** Presubmit ERRORS **\n!!\n\n' |
533 'Was the presubmit check useful? Please send feedback & hate mail ' | 537 'Was the presubmit check useful? Please send feedback & hate mail ' |
534 'to maruel@chromium.org!\n') | 538 'to maruel@chromium.org!\n') |
535 self.assertEquals(output.getvalue(), text) | 539 self.assertEquals(output.getvalue(), text) |
536 | 540 |
537 def testDirectoryHandling(self): | 541 def testDirectoryHandling(self): |
538 files = [ | 542 files = [ |
539 ['A', 'isdir'], | 543 ['A', 'isdir'], |
540 ['A', presubmit.os.path.join('isdir', 'blat.cc')], | 544 ['A', presubmit.os.path.join('isdir', 'blat.cc')], |
541 ] | 545 ] |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
593 self.mox.ReplayAll() | 597 self.mox.ReplayAll() |
594 | 598 |
595 output = StringIO.StringIO() | 599 output = StringIO.StringIO() |
596 input_buf = StringIO.StringIO('y\n') | 600 input_buf = StringIO.StringIO('y\n') |
597 change = presubmit.Change( | 601 change = presubmit.Change( |
598 'foo', "Blah Blah\n\nSTORY=http://tracker.com/42\nBUG=boo\n", | 602 'foo', "Blah Blah\n\nSTORY=http://tracker.com/42\nBUG=boo\n", |
599 self.fake_root_dir, None, 0, 0) | 603 self.fake_root_dir, None, 0, 0) |
600 self.failUnless(presubmit.DoPresubmitChecks( | 604 self.failUnless(presubmit.DoPresubmitChecks( |
601 change, False, True, output, input_buf, DEFAULT_SCRIPT, False)) | 605 change, False, True, output, input_buf, DEFAULT_SCRIPT, False)) |
602 self.assertEquals(output.getvalue(), | 606 self.assertEquals(output.getvalue(), |
603 ('Running presubmit hooks...\n' | 607 ('Running presubmit upload checks ...\n' |
604 'Warning, no presubmit.py found.\n' | 608 'Warning, no presubmit.py found.\n' |
605 'Running default presubmit script.\n' | 609 'Running default presubmit script.\n' |
| 610 '\n' |
606 '** Presubmit Messages **\n' | 611 '** Presubmit Messages **\n' |
607 'http://tracker.com/42\n\n')) | 612 'http://tracker.com/42\n' |
| 613 '\n' |
| 614 'Presubmit checks passed.\n')) |
608 | 615 |
609 def testGetTrySlavesExecuter(self): | 616 def testGetTrySlavesExecuter(self): |
610 self.mox.ReplayAll() | 617 self.mox.ReplayAll() |
611 | 618 |
612 executer = presubmit.GetTrySlavesExecuter() | 619 executer = presubmit.GetTrySlavesExecuter() |
613 self.assertEqual([], executer.ExecPresubmitScript('')) | 620 self.assertEqual([], executer.ExecPresubmitScript('')) |
614 self.assertEqual([], executer.ExecPresubmitScript('def foo():\n return\n')) | 621 self.assertEqual([], executer.ExecPresubmitScript('def foo():\n return\n')) |
615 | 622 |
616 # bad results | 623 # bad results |
617 starts_with_space_result = [' starts_with_space'] | 624 starts_with_space_result = [' starts_with_space'] |
(...skipping 1346 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1964 def testCannedCheckOwners_HTTPS_HostURL(self): | 1971 def testCannedCheckOwners_HTTPS_HostURL(self): |
1965 self.AssertOwnersWorks(approvers=set(['ben@example.com']), | 1972 self.AssertOwnersWorks(approvers=set(['ben@example.com']), |
1966 host_url='https://localhost') | 1973 host_url='https://localhost') |
1967 | 1974 |
1968 def testCannedCheckOwners_MissingSchemeInHostURL(self): | 1975 def testCannedCheckOwners_MissingSchemeInHostURL(self): |
1969 self.AssertOwnersWorks(approvers=set(['ben@example.com']), | 1976 self.AssertOwnersWorks(approvers=set(['ben@example.com']), |
1970 host_url='localhost') | 1977 host_url='localhost') |
1971 | 1978 |
1972 def testCannedCheckOwners_NoIssue(self): | 1979 def testCannedCheckOwners_NoIssue(self): |
1973 self.AssertOwnersWorks(issue=None, | 1980 self.AssertOwnersWorks(issue=None, |
1974 expected_output='Change not uploaded for review\n') | 1981 expected_output="OWNERS check failed: this change has no Rietveld " |
| 1982 "issue number, so we can't check it for approvals.\n") |
1975 | 1983 |
1976 def testCannedCheckOwners_NoLGTM(self): | 1984 def testCannedCheckOwners_NoLGTM(self): |
1977 self.AssertOwnersWorks(expected_output='Missing LGTM from someone ' | 1985 self.AssertOwnersWorks(expected_output='Missing LGTM from someone ' |
1978 'other than john@example.com\n') | 1986 'other than john@example.com\n') |
1979 | 1987 |
1980 def testCannedCheckOwners_OnlyOwnerLGTM(self): | 1988 def testCannedCheckOwners_OnlyOwnerLGTM(self): |
1981 self.AssertOwnersWorks(approvers=set(['john@example.com']), | 1989 self.AssertOwnersWorks(approvers=set(['john@example.com']), |
1982 expected_output='Missing LGTM from someone ' | 1990 expected_output='Missing LGTM from someone ' |
1983 'other than john@example.com\n') | 1991 'other than john@example.com\n') |
1984 | 1992 |
(...skipping 15 matching lines...) Expand all Loading... |
2000 | 2008 |
2001 def testCannedCheckOwners_WithLGTMs(self): | 2009 def testCannedCheckOwners_WithLGTMs(self): |
2002 self.AssertOwnersWorks(approvers=set(['ben@example.com']), | 2010 self.AssertOwnersWorks(approvers=set(['ben@example.com']), |
2003 uncovered_files=set()) | 2011 uncovered_files=set()) |
2004 | 2012 |
2005 | 2013 |
2006 | 2014 |
2007 if __name__ == '__main__': | 2015 if __name__ == '__main__': |
2008 import unittest | 2016 import unittest |
2009 unittest.main() | 2017 unittest.main() |
OLD | NEW |