| OLD | NEW |
| 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_support.py and presubmit_canned_checks.py.""" | 6 """Unit tests for presubmit_support.py and presubmit_canned_checks.py.""" |
| 7 | 7 |
| 8 import exceptions | 8 import exceptions |
| 9 import random | 9 import random |
| 10 import string | 10 import string |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 203 {'URL': 'svn:/foo/boo/flap.h'}) | 203 {'URL': 'svn:/foo/boo/flap.h'}) |
| 204 presubmit.gcl.ReadFile(blat).AndReturn('boo!\nahh?') | 204 presubmit.gcl.ReadFile(blat).AndReturn('boo!\nahh?') |
| 205 presubmit.gcl.ReadFile(notfound).AndReturn('look!\nthere?') | 205 presubmit.gcl.ReadFile(notfound).AndReturn('look!\nthere?') |
| 206 self.mox.ReplayAll() | 206 self.mox.ReplayAll() |
| 207 | 207 |
| 208 ci = presubmit.gcl.ChangeInfo(name='mychange', issue=0, patchset=0, | 208 ci = presubmit.gcl.ChangeInfo(name='mychange', issue=0, patchset=0, |
| 209 description='\n'.join(description_lines), | 209 description='\n'.join(description_lines), |
| 210 files=files) | 210 files=files) |
| 211 change = presubmit.GclChange(ci) | 211 change = presubmit.GclChange(ci) |
| 212 | 212 |
| 213 self.failUnless(change.Change() == 'mychange') | 213 self.failUnless(change.Name() == 'mychange') |
| 214 self.failUnless(change.DescriptionText() == | 214 self.failUnless(change.DescriptionText() == |
| 215 'Hello there\nthis is a change\nand some more regular text') | 215 'Hello there\nthis is a change\nand some more regular text') |
| 216 self.failUnless(change.FullDescriptionText() == | 216 self.failUnless(change.FullDescriptionText() == |
| 217 '\n'.join(description_lines)) | 217 '\n'.join(description_lines)) |
| 218 | 218 |
| 219 self.failUnless(change.BUG == '123') | 219 self.failUnless(change.BUG == '123') |
| 220 self.failUnless(change.STORY == 'http://foo/') | 220 self.failUnless(change.STORY == 'http://foo/') |
| 221 | 221 |
| 222 self.failUnless(len(change.AffectedFiles()) == 4) | 222 self.failUnless(len(change.AffectedFiles()) == 4) |
| 223 self.failUnless(len(change.AffectedFiles(include_dirs=True)) == 5) | 223 self.failUnless(len(change.AffectedFiles(include_dirs=True)) == 5) |
| (...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 474 | 474 |
| 475 affected_files = change.AffectedFiles(include_dirs=False) | 475 affected_files = change.AffectedFiles(include_dirs=False) |
| 476 self.failUnless(len(affected_files) == 1) | 476 self.failUnless(len(affected_files) == 1) |
| 477 self.failUnless(affected_files[0].LocalPath().endswith('blat.cc')) | 477 self.failUnless(affected_files[0].LocalPath().endswith('blat.cc')) |
| 478 affected_files_and_dirs = change.AffectedFiles(include_dirs=True) | 478 affected_files_and_dirs = change.AffectedFiles(include_dirs=True) |
| 479 self.failUnless(len(affected_files_and_dirs) == 2) | 479 self.failUnless(len(affected_files_and_dirs) == 2) |
| 480 | 480 |
| 481 def testTags(self): | 481 def testTags(self): |
| 482 DEFAULT_SCRIPT = """ | 482 DEFAULT_SCRIPT = """ |
| 483 def CheckChangeOnUpload(input_api, output_api): | 483 def CheckChangeOnUpload(input_api, output_api): |
| 484 if input_api.change.tags['BUG'] != 'boo': | 484 if input_api.change.tags['BUG'] != 'boo': |
| 485 return [output_api.PresubmitError('Tag parsing failed. 1')] | 485 return [output_api.PresubmitError('Tag parsing failed. 1')] |
| 486 if input_api.change.tags['STORY'] != 'http://tracker.com/42': | 486 if input_api.change.tags['STORY'] != 'http://tracker.com/42': |
| 487 return [output_api.PresubmitError('Tag parsing failed. 2')] | 487 return [output_api.PresubmitError('Tag parsing failed. 2')] |
| 488 if input_api.change.BUG != 'boo': | 488 if input_api.change.BUG != 'boo': |
| 489 return [output_api.PresubmitError('Tag parsing failed. 6')] | 489 return [output_api.PresubmitError('Tag parsing failed. 6')] |
| 490 if input_api.change.STORY != 'http://tracker.com/42': | 490 if input_api.change.STORY != 'http://tracker.com/42': |
| 491 return [output_api.PresubmitError('Tag parsing failed. 7')] | 491 return [output_api.PresubmitError('Tag parsing failed. 7')] |
| 492 if 'TEST' in input_api.change.tags: | 492 try: |
| 493 return [output_api.PresubmitError('Tag parsing failed. 3')] | 493 y = False |
| 494 if input_api.change.DescriptionText() != 'Blah Blah': | 494 x = input_api.change.invalid |
| 495 return [output_api.PresubmitError('Tag parsing failed. 4 ' + | 495 except AttributeError: |
| 496 input_api.change.DescriptionText())] | 496 y = True |
| 497 if (input_api.change.FullDescriptionText() != | 497 if not y: |
| 498 'Blah Blah\\n\\nSTORY=http://tracker.com/42\\nBUG=boo\\n'): | 498 return [output_api.PresubmitError('Tag parsing failed. 8')] |
| 499 return [output_api.PresubmitError('Tag parsing failed. 5 ' + | 499 if 'TEST' in input_api.change.tags: |
| 500 input_api.change.FullDescriptionText())] | 500 return [output_api.PresubmitError('Tag parsing failed. 3')] |
| 501 return [output_api.PresubmitNotifyResult(input_api.change.tags['STORY'])] | 501 if input_api.change.DescriptionText() != 'Blah Blah': |
| 502 return [output_api.PresubmitError('Tag parsing failed. 4 ' + |
| 503 input_api.change.DescriptionText())] |
| 504 if (input_api.change.FullDescriptionText() != |
| 505 'Blah Blah\\n\\nSTORY=http://tracker.com/42\\nBUG=boo\\n'): |
| 506 return [output_api.PresubmitError('Tag parsing failed. 5 ' + |
| 507 input_api.change.FullDescriptionText())] |
| 508 return [output_api.PresubmitNotifyResult(input_api.change.tags['STORY'])] |
| 502 def CheckChangeOnCommit(input_api, output_api): | 509 def CheckChangeOnCommit(input_api, output_api): |
| 503 raise Exception("Test error") | 510 raise Exception("Test error") |
| 504 """ | 511 """ |
| 505 self.mox.ReplayAll() | 512 self.mox.ReplayAll() |
| 506 | 513 |
| 507 change = presubmit.gcl.ChangeInfo( | 514 change = presubmit.gcl.ChangeInfo( |
| 508 name='foo', | 515 name='foo', |
| 509 issue=0, | 516 issue=0, |
| 510 patchset=0, | 517 patchset=0, |
| 511 description="Blah Blah\n\nSTORY=http://tracker.com/42\nBUG=boo\n", | 518 description="Blah Blah\n\nSTORY=http://tracker.com/42\nBUG=boo\n", |
| (...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 900 | 907 |
| 901 output = filter(lambda x: x.IsTextFile(), list) | 908 output = filter(lambda x: x.IsTextFile(), list) |
| 902 self.failUnless(len(output) == 1) | 909 self.failUnless(len(output) == 1) |
| 903 self.failUnless(list[0] == output[0]) | 910 self.failUnless(list[0] == output[0]) |
| 904 | 911 |
| 905 | 912 |
| 906 class GclChangeUnittest(PresubmitTestsBase): | 913 class GclChangeUnittest(PresubmitTestsBase): |
| 907 def testMembersChanged(self): | 914 def testMembersChanged(self): |
| 908 self.mox.ReplayAll() | 915 self.mox.ReplayAll() |
| 909 members = [ | 916 members = [ |
| 910 'AbsoluteLocalPaths', 'AffectedFiles', 'AffectedTextFiles', 'Change', | 917 'AbsoluteLocalPaths', 'AffectedFiles', 'AffectedTextFiles', |
| 911 'DescriptionText', 'FullDescriptionText', 'LocalPaths', | 918 'DescriptionText', 'FullDescriptionText', 'LocalPaths', 'Name', |
| 912 'RepositoryRoot', 'RightHandSideLines', 'ServerPaths', | 919 'RepositoryRoot', 'RightHandSideLines', 'ServerPaths', |
| 913 'issue', 'patchset', 'tags', | 920 'issue', 'patchset', 'tags', |
| 914 ] | 921 ] |
| 915 # If this test fails, you should add the relevant test. | 922 # If this test fails, you should add the relevant test. |
| 916 ci = presubmit.gcl.ChangeInfo('', 0, 0, '', None) | 923 ci = presubmit.gcl.ChangeInfo('', 0, 0, '', None) |
| 917 self.compareMembers(presubmit.GclChange(ci, self.fake_root_dir), members) | 924 self.compareMembers(presubmit.GclChange(ci, self.fake_root_dir), members) |
| 918 | 925 |
| 919 | 926 |
| 920 class CannedChecksUnittest(PresubmitTestsBase): | 927 class CannedChecksUnittest(PresubmitTestsBase): |
| 921 """Tests presubmit_canned_checks.py.""" | 928 """Tests presubmit_canned_checks.py.""" |
| (...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1307 test_result.errors = 0 | 1314 test_result.errors = 0 |
| 1308 self.mox.ReplayAll() | 1315 self.mox.ReplayAll() |
| 1309 | 1316 |
| 1310 results = presubmit_canned_checks.RunPythonUnitTests( | 1317 results = presubmit_canned_checks.RunPythonUnitTests( |
| 1311 input_api, presubmit.OutputApi, ['test_module']) | 1318 input_api, presubmit.OutputApi, ['test_module']) |
| 1312 self.assertEquals(len(results), 0) | 1319 self.assertEquals(len(results), 0) |
| 1313 | 1320 |
| 1314 | 1321 |
| 1315 if __name__ == '__main__': | 1322 if __name__ == '__main__': |
| 1316 unittest.main() | 1323 unittest.main() |
| OLD | NEW |