OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env 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 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,R0201,W0212,W0403 | 9 # pylint: disable=E1101,E1103,R0201,W0212,W0403 |
10 | 10 |
(...skipping 1374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1385 Args: | 1385 Args: |
1386 check: the check to run. | 1386 check: the check to run. |
1387 content1: content which is expected to pass the check. | 1387 content1: content which is expected to pass the check. |
1388 content2: content which is expected to fail the check. | 1388 content2: content which is expected to fail the check. |
1389 error_type: the type of the error expected for content2. | 1389 error_type: the type of the error expected for content2. |
1390 """ | 1390 """ |
1391 change1 = presubmit.Change( | 1391 change1 = presubmit.Change( |
1392 'foo1', 'foo1\n', self.fake_root_dir, None, 0, 0, None) | 1392 'foo1', 'foo1\n', self.fake_root_dir, None, 0, 0, None) |
1393 input_api1 = self.MockInputApi(change1, False) | 1393 input_api1 = self.MockInputApi(change1, False) |
1394 affected_file = self.mox.CreateMock(presubmit.SvnAffectedFile) | 1394 affected_file = self.mox.CreateMock(presubmit.SvnAffectedFile) |
1395 input_api1.AffectedFiles(mox.IgnoreArg(), include_deletes=False).AndReturn( | 1395 input_api1.AffectedFiles( |
1396 [affected_file]) | 1396 include_deletes=False, |
| 1397 file_filter=mox.IgnoreArg()).AndReturn([affected_file]) |
1397 affected_file.NewContents().AndReturn([ | 1398 affected_file.NewContents().AndReturn([ |
1398 'ahoy', | 1399 'ahoy', |
1399 'yo' + content1, | 1400 'yo' + content1, |
1400 'hay', | 1401 'hay', |
1401 'yer', | 1402 'yer', |
1402 'ya']) | 1403 'ya']) |
1403 | 1404 |
1404 change2 = presubmit.Change( | 1405 change2 = presubmit.Change( |
1405 'foo2', 'foo2\n', self.fake_root_dir, None, 0, 0, None) | 1406 'foo2', 'foo2\n', self.fake_root_dir, None, 0, 0, None) |
1406 input_api2 = self.MockInputApi(change2, False) | 1407 input_api2 = self.MockInputApi(change2, False) |
1407 | 1408 |
1408 input_api2.AffectedFiles(mox.IgnoreArg(), include_deletes=False).AndReturn( | 1409 input_api2.AffectedFiles( |
1409 [affected_file]) | 1410 include_deletes=False, |
| 1411 file_filter=mox.IgnoreArg()).AndReturn([affected_file]) |
1410 affected_file.NewContents().AndReturn([ | 1412 affected_file.NewContents().AndReturn([ |
1411 'ahoy', | 1413 'ahoy', |
1412 'yo' + content2, | 1414 'yo' + content2, |
1413 'hay', | 1415 'hay', |
1414 'yer', | 1416 'yer', |
1415 'ya']) | 1417 'ya']) |
1416 affected_file.ChangedContents().AndReturn([ | 1418 affected_file.ChangedContents().AndReturn([ |
1417 (42, 'yo, ' + content2), | 1419 (42, 'yo, ' + content2), |
1418 (43, 'yer'), | 1420 (43, 'yer'), |
1419 (23, 'ya')]) | 1421 (23, 'ya')]) |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1589 # Only this one will trigger. | 1591 # Only this one will trigger. |
1590 affected_file4 = self.mox.CreateMock(presubmit.SvnAffectedFile) | 1592 affected_file4 = self.mox.CreateMock(presubmit.SvnAffectedFile) |
1591 affected_file4.LocalPath().AndReturn('makefile.foo') | 1593 affected_file4.LocalPath().AndReturn('makefile.foo') |
1592 affected_file1.NewContents().AndReturn(['yo, ']) | 1594 affected_file1.NewContents().AndReturn(['yo, ']) |
1593 affected_file4.NewContents().AndReturn(['ye\t']) | 1595 affected_file4.NewContents().AndReturn(['ye\t']) |
1594 affected_file4.ChangedContents().AndReturn([(46, 'ye\t')]) | 1596 affected_file4.ChangedContents().AndReturn([(46, 'ye\t')]) |
1595 affected_file4.LocalPath().AndReturn('makefile.foo') | 1597 affected_file4.LocalPath().AndReturn('makefile.foo') |
1596 affected_files = (affected_file1, affected_file2, | 1598 affected_files = (affected_file1, affected_file2, |
1597 affected_file3, affected_file4) | 1599 affected_file3, affected_file4) |
1598 | 1600 |
1599 def test(source_filter, include_deletes): | 1601 def test(file_filter, include_deletes): |
1600 self.assertFalse(include_deletes) | 1602 self.assertFalse(include_deletes) |
1601 for x in affected_files: | 1603 for x in affected_files: |
1602 if source_filter(x): | 1604 if file_filter(x): |
1603 yield x | 1605 yield x |
1604 # Override the mock of these functions. | 1606 # Override the mock of these functions. |
1605 input_api1.FilterSourceFile = lambda x: x | 1607 input_api1.FilterSourceFile = lambda x: x |
1606 input_api1.AffectedFiles = test | 1608 input_api1.AffectedFiles = test |
1607 self.mox.ReplayAll() | 1609 self.mox.ReplayAll() |
1608 | 1610 |
1609 results1 = presubmit_canned_checks.CheckChangeHasNoTabs(input_api1, | 1611 results1 = presubmit_canned_checks.CheckChangeHasNoTabs(input_api1, |
1610 presubmit.OutputApi, None) | 1612 presubmit.OutputApi, None) |
1611 self.assertEquals(len(results1), 1) | 1613 self.assertEquals(len(results1), 1) |
1612 self.assertEquals(results1[0].__class__, | 1614 self.assertEquals(results1[0].__class__, |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1711 change.GetModifiedFiles().AndReturn([modified_dir_file]) | 1713 change.GetModifiedFiles().AndReturn([modified_dir_file]) |
1712 change.GetAllModifiedFiles().AndReturn([modified_dir_file, | 1714 change.GetAllModifiedFiles().AndReturn([modified_dir_file, |
1713 accidental_submssion_file]) | 1715 accidental_submssion_file]) |
1714 input_api = self.MockInputApi(change, True) | 1716 input_api = self.MockInputApi(change, True) |
1715 | 1717 |
1716 affected_file = self.mox.CreateMock(presubmit.SvnAffectedFile) | 1718 affected_file = self.mox.CreateMock(presubmit.SvnAffectedFile) |
1717 affected_file.Action().AndReturn('M') | 1719 affected_file.Action().AndReturn('M') |
1718 affected_file.IsDirectory().AndReturn(True) | 1720 affected_file.IsDirectory().AndReturn(True) |
1719 affected_file.AbsoluteLocalPath().AndReturn(accidental_submssion_file) | 1721 affected_file.AbsoluteLocalPath().AndReturn(accidental_submssion_file) |
1720 affected_file.LocalPath().AndReturn(accidental_submssion_file) | 1722 affected_file.LocalPath().AndReturn(accidental_submssion_file) |
1721 input_api.AffectedFiles(None).AndReturn([affected_file]) | 1723 input_api.AffectedFiles(file_filter=None).AndReturn([affected_file]) |
1722 | 1724 |
1723 self.mox.ReplayAll() | 1725 self.mox.ReplayAll() |
1724 | 1726 |
1725 check = presubmit_canned_checks.CheckSvnModifiedDirectories | 1727 check = presubmit_canned_checks.CheckSvnModifiedDirectories |
1726 results = check(input_api, presubmit.OutputApi, None) | 1728 results = check(input_api, presubmit.OutputApi, None) |
1727 self.assertEquals(len(results), 1) | 1729 self.assertEquals(len(results), 1) |
1728 self.assertEquals(results[0].__class__, | 1730 self.assertEquals(results[0].__class__, |
1729 presubmit.OutputApi.PresubmitPromptWarning) | 1731 presubmit.OutputApi.PresubmitPromptWarning) |
1730 | 1732 |
1731 def testCheckSvnForCommonMimeTypes(self): | 1733 def testCheckSvnForCommonMimeTypes(self): |
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1989 affected_file = self.mox.CreateMock(presubmit.SvnAffectedFile) | 1991 affected_file = self.mox.CreateMock(presubmit.SvnAffectedFile) |
1990 input_api = self.MockInputApi(change, False) | 1992 input_api = self.MockInputApi(change, False) |
1991 fake_db = self.mox.CreateMock(owners.Database) | 1993 fake_db = self.mox.CreateMock(owners.Database) |
1992 fake_db.email_regexp = input_api.re.compile(owners.BASIC_EMAIL_REGEXP) | 1994 fake_db.email_regexp = input_api.re.compile(owners.BASIC_EMAIL_REGEXP) |
1993 input_api.owners_db = fake_db | 1995 input_api.owners_db = fake_db |
1994 input_api.is_committing = True | 1996 input_api.is_committing = True |
1995 input_api.tbr = tbr | 1997 input_api.tbr = tbr |
1996 | 1998 |
1997 if not tbr and issue: | 1999 if not tbr and issue: |
1998 affected_file.LocalPath().AndReturn('foo.cc') | 2000 affected_file.LocalPath().AndReturn('foo.cc') |
1999 change.AffectedFiles(None).AndReturn([affected_file]) | 2001 change.AffectedFiles(file_filter=None).AndReturn([affected_file]) |
2000 | 2002 |
2001 expected_host = 'http://localhost' | 2003 expected_host = 'http://localhost' |
2002 if host_url: | 2004 if host_url: |
2003 input_api.host_url = host_url | 2005 input_api.host_url = host_url |
2004 if host_url.startswith('https'): | 2006 if host_url.startswith('https'): |
2005 expected_host = host_url | 2007 expected_host = host_url |
2006 | 2008 |
2007 owner_email = 'john@example.com' | 2009 owner_email = 'john@example.com' |
2008 messages = list('{"sender": "' + a + '","text": "lgtm"}' for | 2010 messages = list('{"sender": "' + a + '","text": "lgtm"}' for |
2009 a in approvers) | 2011 a in approvers) |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2144 whitelist=['^a$', '^b$'], | 2146 whitelist=['^a$', '^b$'], |
2145 blacklist=['a']) | 2147 blacklist=['a']) |
2146 self.assertEqual(results, []) | 2148 self.assertEqual(results, []) |
2147 self.checkstdout( | 2149 self.checkstdout( |
2148 'Running %s\n' % presubmit.os.path.join('random_directory', 'b')) | 2150 'Running %s\n' % presubmit.os.path.join('random_directory', 'b')) |
2149 | 2151 |
2150 | 2152 |
2151 if __name__ == '__main__': | 2153 if __name__ == '__main__': |
2152 import unittest | 2154 import unittest |
2153 unittest.main() | 2155 unittest.main() |
OLD | NEW |