| 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: disable=E1101,E1103 | 8 # pylint: disable=E1101,E1103 |
| 9 | 9 |
| 10 import logging | 10 import logging |
| 11 import os | 11 import os |
| 12 import StringIO | 12 import StringIO |
| 13 import sys | 13 import sys |
| 14 import time | 14 import time |
| 15 | 15 |
| 16 sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) | 16 sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) |
| 17 | 17 |
| 18 from testing_support.super_mox import mox, SuperMoxTestBase | 18 from testing_support.super_mox import mox, SuperMoxTestBase |
| 19 | 19 |
| 20 import owners | 20 import owners |
| 21 import presubmit_support as presubmit | 21 import presubmit_support as presubmit |
| 22 import rietveld | 22 import rietveld |
| 23 | 23 |
| 24 # Shortcut. | 24 # Shortcut. |
| 25 presubmit_canned_checks = presubmit.presubmit_canned_checks | 25 presubmit_canned_checks = presubmit.presubmit_canned_checks |
| 26 | 26 |
| 27 | 27 |
| 28 # Access to a protected member XXX of a client class |
| 29 # pylint: disable=W0212 |
| 30 |
| 31 |
| 28 class PresubmitTestsBase(SuperMoxTestBase): | 32 class PresubmitTestsBase(SuperMoxTestBase): |
| 29 """Setups and tear downs the mocks but doesn't test anything as-is.""" | 33 """Setups and tear downs the mocks but doesn't test anything as-is.""" |
| 30 presubmit_text = """ | 34 presubmit_text = """ |
| 31 def CheckChangeOnUpload(input_api, output_api): | 35 def CheckChangeOnUpload(input_api, output_api): |
| 32 if not input_api.change.NOSUCHKEY: | 36 if not input_api.change.NOSUCHKEY: |
| 33 return [output_api.PresubmitError("!!")] | 37 return [output_api.PresubmitError("!!")] |
| 34 elif not input_api.change.REALLYNOSUCHKEY: | 38 elif not input_api.change.REALLYNOSUCHKEY: |
| 35 return [output_api.PresubmitPromptWarning("??")] | 39 return [output_api.PresubmitPromptWarning("??")] |
| 36 elif not input_api.change.REALLYABSOLUTELYNOSUCHKEY: | 40 elif not input_api.change.REALLYABSOLUTELYNOSUCHKEY: |
| 37 return [output_api.PresubmitPromptWarning("??"), | 41 return [output_api.PresubmitPromptWarning("??"), |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 105 this is line number 45 | 109 this is line number 45 |
| 106 + | 110 + |
| 107 this is line number 46 | 111 this is line number 46 |
| 108 this is line number 47 | 112 this is line number 47 |
| 109 -this is line number 48 | 113 -this is line number 48 |
| 110 +this is line number 48.1 | 114 +this is line number 48.1 |
| 111 this is line number 49 | 115 this is line number 49 |
| 112 """ | 116 """ |
| 113 | 117 |
| 114 def setUp(self): | 118 def setUp(self): |
| 119 SuperMoxTestBase.setUp(self) |
| 115 class FakeChange(object): | 120 class FakeChange(object): |
| 116 root = '/' | 121 def __init__(self, obj): |
| 122 self._root = obj.fake_root_dir |
| 123 def RepositoryRoot(self): |
| 124 return self._root |
| 117 | 125 |
| 118 def RepositoryRoot(self): | |
| 119 return self.root | |
| 120 | |
| 121 SuperMoxTestBase.setUp(self) | |
| 122 self.fake_change = FakeChange() | |
| 123 self.mox.StubOutWithMock(presubmit, 'random') | 126 self.mox.StubOutWithMock(presubmit, 'random') |
| 124 self.mox.StubOutWithMock(presubmit, 'warn') | 127 self.mox.StubOutWithMock(presubmit, 'warn') |
| 125 presubmit._ASKED_FOR_FEEDBACK = False | 128 presubmit._ASKED_FOR_FEEDBACK = False |
| 126 self.fake_root_dir = self.RootDir() | 129 self.fake_root_dir = self.RootDir() |
| 130 self.fake_change = FakeChange(self) |
| 131 |
| 127 # Special mocks. | 132 # Special mocks. |
| 128 def MockAbsPath(f): | 133 def MockAbsPath(f): |
| 129 return f | 134 return f |
| 130 def MockChdir(f): | 135 def MockChdir(f): |
| 131 return None | 136 return None |
| 132 # SuperMoxTestBase already mock these but simplify our life. | 137 # SuperMoxTestBase already mock these but simplify our life. |
| 133 presubmit.os.path.abspath = MockAbsPath | 138 presubmit.os.path.abspath = MockAbsPath |
| 134 presubmit.os.getcwd = self.RootDir | 139 presubmit.os.getcwd = self.RootDir |
| 135 presubmit.os.chdir = MockChdir | 140 presubmit.os.chdir = MockChdir |
| 136 self.mox.StubOutWithMock(presubmit.scm, 'determine_scm') | 141 self.mox.StubOutWithMock(presubmit.scm, 'determine_scm') |
| 137 self.mox.StubOutWithMock(presubmit.scm.SVN, 'CaptureInfo') | 142 self.mox.StubOutWithMock(presubmit.scm.SVN, '_CaptureInfo') |
| 138 self.mox.StubOutWithMock(presubmit.scm.SVN, 'GetFileProperty') | 143 self.mox.StubOutWithMock(presubmit.scm.SVN, 'GetFileProperty') |
| 139 self.mox.StubOutWithMock(presubmit.gclient_utils, 'FileRead') | 144 self.mox.StubOutWithMock(presubmit.gclient_utils, 'FileRead') |
| 140 self.mox.StubOutWithMock(presubmit.gclient_utils, 'FileWrite') | 145 self.mox.StubOutWithMock(presubmit.gclient_utils, 'FileWrite') |
| 141 self.mox.StubOutWithMock(presubmit.scm.SVN, 'GenerateDiff') | 146 self.mox.StubOutWithMock(presubmit.scm.SVN, 'GenerateDiff') |
| 142 | 147 |
| 143 | 148 |
| 144 class PresubmitUnittest(PresubmitTestsBase): | 149 class PresubmitUnittest(PresubmitTestsBase): |
| 145 """General presubmit_support.py tests (excluding InputApi and OutputApi).""" | 150 """General presubmit_support.py tests (excluding InputApi and OutputApi).""" |
| 146 | 151 |
| 147 _INHERIT_SETTINGS = 'inherit-review-settings-ok' | 152 _INHERIT_SETTINGS = 'inherit-review-settings-ok' |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 246 'BUG=123', | 251 'BUG=123', |
| 247 ' STORY =http://foo/ \t', | 252 ' STORY =http://foo/ \t', |
| 248 'and some more regular text \t') | 253 'and some more regular text \t') |
| 249 files = [ | 254 files = [ |
| 250 ['A', 'foo/blat.cc'], | 255 ['A', 'foo/blat.cc'], |
| 251 ['M', 'binary.dll'], # a binary file | 256 ['M', 'binary.dll'], # a binary file |
| 252 ['A', 'isdir'], # a directory | 257 ['A', 'isdir'], # a directory |
| 253 ['?', 'flop/notfound.txt'], # not found in SVN, still exists locally | 258 ['?', 'flop/notfound.txt'], # not found in SVN, still exists locally |
| 254 ['D', 'boo/flap.h'], | 259 ['D', 'boo/flap.h'], |
| 255 ] | 260 ] |
| 256 blat = presubmit.os.path.join(self.fake_root_dir, 'foo', 'blat.cc') | 261 blat = presubmit.os.path.join('foo', 'blat.cc') |
| 257 notfound = presubmit.os.path.join( | 262 notfound = presubmit.os.path.join('flop', 'notfound.txt') |
| 258 self.fake_root_dir, 'flop', 'notfound.txt') | 263 flap = presubmit.os.path.join('boo', 'flap.h') |
| 259 flap = presubmit.os.path.join(self.fake_root_dir, 'boo', 'flap.h') | 264 binary = 'binary.dll' |
| 260 binary = presubmit.os.path.join(self.fake_root_dir, 'binary.dll') | 265 isdir = 'isdir' |
| 261 isdir = presubmit.os.path.join(self.fake_root_dir, 'isdir') | 266 f_blat = presubmit.os.path.join(self.fake_root_dir, blat) |
| 262 presubmit.os.path.exists(blat).AndReturn(True) | 267 f_notfound = presubmit.os.path.join(self.fake_root_dir, notfound) |
| 263 presubmit.os.path.isdir(blat).AndReturn(False) | 268 f_flap = presubmit.os.path.join(self.fake_root_dir, flap) |
| 264 presubmit.os.path.exists(binary).AndReturn(True) | 269 f_binary = presubmit.os.path.join(self.fake_root_dir, binary) |
| 265 presubmit.os.path.isdir(binary).AndReturn(False) | 270 f_isdir = presubmit.os.path.join(self.fake_root_dir, isdir) |
| 266 presubmit.os.path.exists(isdir).AndReturn(True) | 271 presubmit.os.path.exists(f_blat).AndReturn(True) |
| 267 presubmit.os.path.isdir(isdir).AndReturn(True) | 272 presubmit.os.path.isdir(f_blat).AndReturn(False) |
| 268 presubmit.os.path.exists(notfound).AndReturn(True) | 273 presubmit.os.path.exists(f_binary).AndReturn(True) |
| 269 presubmit.os.path.isdir(notfound).AndReturn(False) | 274 presubmit.os.path.isdir(f_binary).AndReturn(False) |
| 270 presubmit.os.path.exists(flap).AndReturn(False) | 275 presubmit.os.path.exists(f_isdir).AndReturn(True) |
| 271 presubmit.scm.SVN.CaptureInfo(flap | 276 presubmit.os.path.isdir(f_isdir).AndReturn(True) |
| 277 presubmit.os.path.exists(f_notfound).AndReturn(True) |
| 278 presubmit.os.path.isdir(f_notfound).AndReturn(False) |
| 279 presubmit.os.path.exists(f_flap).AndReturn(False) |
| 280 presubmit.scm.SVN._CaptureInfo([flap], self.fake_root_dir |
| 272 ).AndReturn({'Node Kind': 'file'}) | 281 ).AndReturn({'Node Kind': 'file'}) |
| 273 presubmit.scm.SVN.GetFileProperty(blat, 'svn:mime-type').AndReturn(None) | |
| 274 presubmit.scm.SVN.GetFileProperty( | 282 presubmit.scm.SVN.GetFileProperty( |
| 275 binary, 'svn:mime-type').AndReturn('application/octet-stream') | 283 blat, 'svn:mime-type', self.fake_root_dir).AndReturn(None) |
| 276 presubmit.scm.SVN.GetFileProperty( | 284 presubmit.scm.SVN.GetFileProperty( |
| 277 notfound, 'svn:mime-type').AndReturn('') | 285 binary, 'svn:mime-type', self.fake_root_dir |
| 278 presubmit.scm.SVN.CaptureInfo(blat).AndReturn( | 286 ).AndReturn('application/octet-stream') |
| 287 presubmit.scm.SVN.GetFileProperty( |
| 288 notfound, 'svn:mime-type', self.fake_root_dir).AndReturn('') |
| 289 presubmit.scm.SVN._CaptureInfo([blat], self.fake_root_dir).AndReturn( |
| 279 {'URL': 'svn:/foo/foo/blat.cc'}) | 290 {'URL': 'svn:/foo/foo/blat.cc'}) |
| 280 presubmit.scm.SVN.CaptureInfo(binary).AndReturn( | 291 presubmit.scm.SVN._CaptureInfo([binary], self.fake_root_dir).AndReturn( |
| 281 {'URL': 'svn:/foo/binary.dll'}) | 292 {'URL': 'svn:/foo/binary.dll'}) |
| 282 presubmit.scm.SVN.CaptureInfo(notfound).AndReturn({}) | 293 presubmit.scm.SVN._CaptureInfo([notfound], self.fake_root_dir).AndReturn({}) |
| 283 presubmit.scm.SVN.CaptureInfo(flap).AndReturn( | 294 presubmit.scm.SVN._CaptureInfo([flap], self.fake_root_dir).AndReturn( |
| 284 {'URL': 'svn:/foo/boo/flap.h'}) | 295 {'URL': 'svn:/foo/boo/flap.h'}) |
| 285 presubmit.scm.SVN.GenerateDiff([blat]).AndReturn(self.presubmit_diffs) | 296 presubmit.scm.SVN.GenerateDiff([blat], self.fake_root_dir, False, None |
| 286 presubmit.scm.SVN.GenerateDiff([notfound]).AndReturn(self.presubmit_diffs) | 297 ).AndReturn(self.presubmit_diffs) |
| 298 presubmit.scm.SVN.GenerateDiff([notfound], self.fake_root_dir, False, None |
| 299 ).AndReturn(self.presubmit_diffs) |
| 287 | 300 |
| 288 self.mox.ReplayAll() | 301 self.mox.ReplayAll() |
| 289 | 302 |
| 290 change = presubmit.SvnChange( | 303 change = presubmit.SvnChange( |
| 291 'mychange', | 304 'mychange', |
| 292 '\n'.join(description_lines), | 305 '\n'.join(description_lines), |
| 293 self.fake_root_dir, | 306 self.fake_root_dir, |
| 294 files, | 307 files, |
| 295 0, | 308 0, |
| 296 0, | 309 0, |
| (...skipping 542 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 839 'os_path', 'owners_db', 'pickle', 'platform', 'python_executable', 're', | 852 'os_path', 'owners_db', 'pickle', 'platform', 'python_executable', 're', |
| 840 'rietveld', 'subprocess', 'tbr', 'tempfile', 'time', 'traceback', | 853 'rietveld', 'subprocess', 'tbr', 'tempfile', 'time', 'traceback', |
| 841 'unittest', 'urllib2', 'version', 'verbose', | 854 'unittest', 'urllib2', 'version', 'verbose', |
| 842 ] | 855 ] |
| 843 # If this test fails, you should add the relevant test. | 856 # If this test fails, you should add the relevant test. |
| 844 self.compareMembers( | 857 self.compareMembers( |
| 845 presubmit.InputApi(self.fake_change, './.', False, None, False), | 858 presubmit.InputApi(self.fake_change, './.', False, None, False), |
| 846 members) | 859 members) |
| 847 | 860 |
| 848 def testDepotToLocalPath(self): | 861 def testDepotToLocalPath(self): |
| 849 presubmit.scm.SVN.CaptureInfo('svn://foo/smurf').AndReturn( | 862 presubmit.scm.SVN._CaptureInfo(['svn://foo/smurf'], self.fake_root_dir |
| 850 {'Path': 'prout'}) | 863 ).AndReturn({'Path': 'prout'}) |
| 851 presubmit.scm.SVN.CaptureInfo('svn:/foo/notfound/burp').AndReturn({}) | 864 presubmit.scm.SVN._CaptureInfo( |
| 865 ['svn:/foo/notfound/burp'], self.fake_root_dir |
| 866 ).AndReturn({}) |
| 852 self.mox.ReplayAll() | 867 self.mox.ReplayAll() |
| 853 | 868 |
| 854 path = presubmit.InputApi( | 869 path = presubmit.InputApi( |
| 855 self.fake_change, './p', False, None, False).DepotToLocalPath( | 870 self.fake_change, './p', False, None, False).DepotToLocalPath( |
| 856 'svn://foo/smurf') | 871 'svn://foo/smurf') |
| 857 self.failUnless(path == 'prout') | 872 self.failUnless(path == 'prout') |
| 858 path = presubmit.InputApi( | 873 path = presubmit.InputApi( |
| 859 self.fake_change, './p', False, None, False).DepotToLocalPath( | 874 self.fake_change, './p', False, None, False).DepotToLocalPath( |
| 860 'svn:/foo/notfound/burp') | 875 'svn:/foo/notfound/burp') |
| 861 self.failUnless(path == None) | 876 self.failUnless(path == None) |
| 862 | 877 |
| 863 def testLocalToDepotPath(self): | 878 def testLocalToDepotPath(self): |
| 864 presubmit.scm.SVN.CaptureInfo('smurf').AndReturn({'URL': 'svn://foo'}) | 879 presubmit.scm.SVN._CaptureInfo(['smurf'], self.fake_root_dir |
| 865 presubmit.scm.SVN.CaptureInfo('notfound-food').AndReturn({}) | 880 ).AndReturn({'URL': 'svn://foo'}) |
| 881 presubmit.scm.SVN._CaptureInfo(['notfound-food'], self.fake_root_dir |
| 882 ).AndReturn({}) |
| 866 self.mox.ReplayAll() | 883 self.mox.ReplayAll() |
| 867 path = presubmit.InputApi( | 884 path = presubmit.InputApi( |
| 868 self.fake_change, './p', False, None, False).LocalToDepotPath( | 885 self.fake_change, './p', False, None, False).LocalToDepotPath( |
| 869 'smurf') | 886 'smurf') |
| 870 self.assertEqual(path, 'svn://foo') | 887 self.assertEqual(path, 'svn://foo') |
| 871 path = presubmit.InputApi( | 888 path = presubmit.InputApi( |
| 872 self.fake_change, './p', False, None, False).LocalToDepotPath( | 889 self.fake_change, './p', False, None, False).LocalToDepotPath( |
| 873 'notfound-food') | 890 'notfound-food') |
| 874 self.assertEquals(path, None) | 891 self.assertEquals(path, None) |
| 875 | 892 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 910 beingdeleted = presubmit.normpath(join(self.fake_root_dir, files[6][1])) | 927 beingdeleted = presubmit.normpath(join(self.fake_root_dir, files[6][1])) |
| 911 notfound = presubmit.normpath(join(self.fake_root_dir, files[7][1])) | 928 notfound = presubmit.normpath(join(self.fake_root_dir, files[7][1])) |
| 912 flap = presubmit.normpath(join(self.fake_root_dir, files[8][1])) | 929 flap = presubmit.normpath(join(self.fake_root_dir, files[8][1])) |
| 913 for i in (blat, readme, binary, weird, another, third_party): | 930 for i in (blat, readme, binary, weird, another, third_party): |
| 914 presubmit.os.path.exists(i).AndReturn(True) | 931 presubmit.os.path.exists(i).AndReturn(True) |
| 915 presubmit.os.path.isdir(i).AndReturn(False) | 932 presubmit.os.path.isdir(i).AndReturn(False) |
| 916 presubmit.os.path.exists(beingdeleted).AndReturn(False) | 933 presubmit.os.path.exists(beingdeleted).AndReturn(False) |
| 917 presubmit.os.path.exists(notfound).AndReturn(False) | 934 presubmit.os.path.exists(notfound).AndReturn(False) |
| 918 presubmit.os.path.exists(flap).AndReturn(True) | 935 presubmit.os.path.exists(flap).AndReturn(True) |
| 919 presubmit.os.path.isdir(flap).AndReturn(False) | 936 presubmit.os.path.isdir(flap).AndReturn(False) |
| 920 presubmit.scm.SVN.CaptureInfo(beingdeleted).AndReturn({}) | 937 presubmit.scm.SVN._CaptureInfo( |
| 921 presubmit.scm.SVN.CaptureInfo(notfound).AndReturn({}) | 938 [files[6][1]], self.fake_root_dir).AndReturn({}) |
| 922 presubmit.scm.SVN.GetFileProperty(blat, 'svn:mime-type').AndReturn(None) | 939 presubmit.scm.SVN._CaptureInfo( |
| 923 presubmit.scm.SVN.GetFileProperty(readme, 'svn:mime-type').AndReturn(None) | 940 [files[7][1]], self.fake_root_dir).AndReturn({}) |
| 924 presubmit.scm.SVN.GetFileProperty(binary, 'svn:mime-type').AndReturn( | 941 presubmit.scm.SVN.GetFileProperty( |
| 925 'application/octet-stream') | 942 files[0][1], 'svn:mime-type', self.fake_root_dir |
| 926 presubmit.scm.SVN.GetFileProperty(weird, 'svn:mime-type').AndReturn(None) | |
| 927 presubmit.scm.SVN.GetFileProperty(another, 'svn:mime-type').AndReturn(None) | |
| 928 presubmit.scm.SVN.GetFileProperty(third_party, 'svn:mime-type' | |
| 929 ).AndReturn(None) | 943 ).AndReturn(None) |
| 930 presubmit.scm.SVN.GenerateDiff([blat]).AndReturn(self.presubmit_diffs) | 944 presubmit.scm.SVN.GetFileProperty( |
| 931 presubmit.scm.SVN.GenerateDiff([another]).AndReturn(self.presubmit_diffs) | 945 files[1][1], 'svn:mime-type', self.fake_root_dir |
| 946 ).AndReturn(None) |
| 947 presubmit.scm.SVN.GetFileProperty( |
| 948 files[2][1], 'svn:mime-type', self.fake_root_dir |
| 949 ).AndReturn('application/octet-stream') |
| 950 presubmit.scm.SVN.GetFileProperty( |
| 951 files[3][1], 'svn:mime-type', self.fake_root_dir |
| 952 ).AndReturn(None) |
| 953 presubmit.scm.SVN.GetFileProperty( |
| 954 files[4][1], 'svn:mime-type', self.fake_root_dir |
| 955 ).AndReturn(None) |
| 956 presubmit.scm.SVN.GetFileProperty( |
| 957 files[5][1], 'svn:mime-type', self.fake_root_dir |
| 958 ).AndReturn(None) |
| 959 presubmit.scm.SVN.GenerateDiff( |
| 960 [files[0][1]], self.fake_root_dir, False, None |
| 961 ).AndReturn(self.presubmit_diffs) |
| 962 presubmit.scm.SVN.GenerateDiff( |
| 963 [files[4][1]], self.fake_root_dir, False, None |
| 964 ).AndReturn(self.presubmit_diffs) |
| 932 | 965 |
| 933 self.mox.ReplayAll() | 966 self.mox.ReplayAll() |
| 934 | 967 |
| 935 change = presubmit.SvnChange( | 968 change = presubmit.SvnChange( |
| 936 'mychange', | 969 'mychange', |
| 937 '\n'.join(description_lines), | 970 '\n'.join(description_lines), |
| 938 self.fake_root_dir, | 971 self.fake_root_dir, |
| 939 files, | 972 files, |
| 940 0, | 973 0, |
| 941 0, | 974 0, |
| (...skipping 21 matching lines...) Expand all Loading... |
| 963 presubmit.normpath(files[0][1])) | 996 presubmit.normpath(files[0][1])) |
| 964 self.assertEqual(rhs_lines[3][0].LocalPath(), | 997 self.assertEqual(rhs_lines[3][0].LocalPath(), |
| 965 presubmit.normpath(files[0][1])) | 998 presubmit.normpath(files[0][1])) |
| 966 self.assertEqual(rhs_lines[7][0].LocalPath(), | 999 self.assertEqual(rhs_lines[7][0].LocalPath(), |
| 967 presubmit.normpath(files[4][1])) | 1000 presubmit.normpath(files[4][1])) |
| 968 self.assertEqual(rhs_lines[13][0].LocalPath(), | 1001 self.assertEqual(rhs_lines[13][0].LocalPath(), |
| 969 presubmit.normpath(files[4][1])) | 1002 presubmit.normpath(files[4][1])) |
| 970 | 1003 |
| 971 def testDefaultWhiteListBlackListFilters(self): | 1004 def testDefaultWhiteListBlackListFilters(self): |
| 972 def f(x): | 1005 def f(x): |
| 973 return presubmit.AffectedFile(x, 'M') | 1006 return presubmit.AffectedFile(x, 'M', self.fake_root_dir) |
| 974 files = [ | 1007 files = [ |
| 975 ( | 1008 ( |
| 976 [ | 1009 [ |
| 977 # To be tested. | 1010 # To be tested. |
| 978 f('a/experimental/b'), | 1011 f('a/experimental/b'), |
| 979 f('experimental/b'), | 1012 f('experimental/b'), |
| 980 f('a/experimental'), | 1013 f('a/experimental'), |
| 981 f('a/experimental.cc'), | 1014 f('a/experimental.cc'), |
| 982 f('a/experimental.S'), | 1015 f('a/experimental.S'), |
| 983 ], | 1016 ], |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1044 # Same number of expected results. | 1077 # Same number of expected results. |
| 1045 self.assertEquals(sorted([f.LocalPath().replace(presubmit.os.sep, '/') | 1078 self.assertEquals(sorted([f.LocalPath().replace(presubmit.os.sep, '/') |
| 1046 for f in results]), | 1079 for f in results]), |
| 1047 sorted(item[1])) | 1080 sorted(item[1])) |
| 1048 | 1081 |
| 1049 def testCustomFilter(self): | 1082 def testCustomFilter(self): |
| 1050 def FilterSourceFile(affected_file): | 1083 def FilterSourceFile(affected_file): |
| 1051 return 'a' in affected_file.LocalPath() | 1084 return 'a' in affected_file.LocalPath() |
| 1052 files = [('A', 'eeaee'), ('M', 'eeabee'), ('M', 'eebcee')] | 1085 files = [('A', 'eeaee'), ('M', 'eeabee'), ('M', 'eebcee')] |
| 1053 for _, item in files: | 1086 for _, item in files: |
| 1054 item = presubmit.os.path.join(self.fake_root_dir, item) | 1087 full_item = presubmit.os.path.join(self.fake_root_dir, item) |
| 1055 presubmit.os.path.exists(item).AndReturn(True) | 1088 presubmit.os.path.exists(full_item).AndReturn(True) |
| 1056 presubmit.os.path.isdir(item).AndReturn(False) | 1089 presubmit.os.path.isdir(full_item).AndReturn(False) |
| 1057 presubmit.scm.SVN.GetFileProperty(item, 'svn:mime-type').AndReturn(None) | 1090 presubmit.scm.SVN.GetFileProperty( |
| 1091 item, 'svn:mime-type', self.fake_root_dir).AndReturn(None) |
| 1058 self.mox.ReplayAll() | 1092 self.mox.ReplayAll() |
| 1059 | 1093 |
| 1060 change = presubmit.SvnChange( | 1094 change = presubmit.SvnChange( |
| 1061 'mychange', '', self.fake_root_dir, files, 0, 0, None) | 1095 'mychange', '', self.fake_root_dir, files, 0, 0, None) |
| 1062 input_api = presubmit.InputApi( | 1096 input_api = presubmit.InputApi( |
| 1063 change, | 1097 change, |
| 1064 presubmit.os.path.join(self.fake_root_dir, 'PRESUBMIT.py'), | 1098 presubmit.os.path.join(self.fake_root_dir, 'PRESUBMIT.py'), |
| 1065 False, None, False) | 1099 False, None, False) |
| 1066 got_files = input_api.AffectedSourceFiles(FilterSourceFile) | 1100 got_files = input_api.AffectedSourceFiles(FilterSourceFile) |
| 1067 self.assertEquals(len(got_files), 2) | 1101 self.assertEquals(len(got_files), 2) |
| 1068 self.assertEquals(got_files[0].LocalPath(), 'eeaee') | 1102 self.assertEquals(got_files[0].LocalPath(), 'eeaee') |
| 1069 self.assertEquals(got_files[1].LocalPath(), 'eeabee') | 1103 self.assertEquals(got_files[1].LocalPath(), 'eeabee') |
| 1070 | 1104 |
| 1071 def testLambdaFilter(self): | 1105 def testLambdaFilter(self): |
| 1072 white_list = presubmit.InputApi.DEFAULT_BLACK_LIST + (r".*?a.*?",) | 1106 white_list = presubmit.InputApi.DEFAULT_BLACK_LIST + (r".*?a.*?",) |
| 1073 black_list = [r".*?b.*?"] | 1107 black_list = [r".*?b.*?"] |
| 1074 files = [('A', 'eeaee'), ('M', 'eeabee'), ('M', 'eebcee'), ('M', 'eecaee')] | 1108 files = [('A', 'eeaee'), ('M', 'eeabee'), ('M', 'eebcee'), ('M', 'eecaee')] |
| 1075 for _, item in files: | 1109 for _, item in files: |
| 1076 item = presubmit.os.path.join(self.fake_root_dir, item) | 1110 full_item = presubmit.os.path.join(self.fake_root_dir, item) |
| 1077 presubmit.os.path.exists(item).AndReturn(True) | 1111 presubmit.os.path.exists(full_item).AndReturn(True) |
| 1078 presubmit.os.path.isdir(item).AndReturn(False) | 1112 presubmit.os.path.isdir(full_item).AndReturn(False) |
| 1079 presubmit.scm.SVN.GetFileProperty(item, 'svn:mime-type').AndReturn(None) | 1113 presubmit.scm.SVN.GetFileProperty( |
| 1114 item, 'svn:mime-type', self.fake_root_dir).AndReturn(None) |
| 1080 self.mox.ReplayAll() | 1115 self.mox.ReplayAll() |
| 1081 | 1116 |
| 1082 change = presubmit.SvnChange( | 1117 change = presubmit.SvnChange( |
| 1083 'mychange', '', self.fake_root_dir, files, 0, 0, None) | 1118 'mychange', '', self.fake_root_dir, files, 0, 0, None) |
| 1084 input_api = presubmit.InputApi( | 1119 input_api = presubmit.InputApi( |
| 1085 change, './PRESUBMIT.py', False, None, False) | 1120 change, './PRESUBMIT.py', False, None, False) |
| 1086 # Sample usage of overiding the default white and black lists. | 1121 # Sample usage of overiding the default white and black lists. |
| 1087 got_files = input_api.AffectedSourceFiles( | 1122 got_files = input_api.AffectedSourceFiles( |
| 1088 lambda x: input_api.FilterSourceFile(x, white_list, black_list)) | 1123 lambda x: input_api.FilterSourceFile(x, white_list, black_list)) |
| 1089 self.assertEquals(len(got_files), 2) | 1124 self.assertEquals(len(got_files), 2) |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1261 | 1296 |
| 1262 class AffectedFileUnittest(PresubmitTestsBase): | 1297 class AffectedFileUnittest(PresubmitTestsBase): |
| 1263 def testMembersChanged(self): | 1298 def testMembersChanged(self): |
| 1264 self.mox.ReplayAll() | 1299 self.mox.ReplayAll() |
| 1265 members = [ | 1300 members = [ |
| 1266 'AbsoluteLocalPath', 'Action', 'ChangedContents', 'GenerateScmDiff', | 1301 'AbsoluteLocalPath', 'Action', 'ChangedContents', 'GenerateScmDiff', |
| 1267 'IsDirectory', 'IsTextFile', 'LocalPath', 'NewContents', 'OldContents', | 1302 'IsDirectory', 'IsTextFile', 'LocalPath', 'NewContents', 'OldContents', |
| 1268 'OldFileTempPath', 'Property', 'ServerPath', | 1303 'OldFileTempPath', 'Property', 'ServerPath', |
| 1269 ] | 1304 ] |
| 1270 # If this test fails, you should add the relevant test. | 1305 # If this test fails, you should add the relevant test. |
| 1271 self.compareMembers(presubmit.AffectedFile('a', 'b'), members) | 1306 self.compareMembers( |
| 1272 self.compareMembers(presubmit.SvnAffectedFile('a', 'b'), members) | 1307 presubmit.AffectedFile('a', 'b', self.fake_root_dir), members) |
| 1308 self.compareMembers( |
| 1309 presubmit.SvnAffectedFile('a', 'b', self.fake_root_dir), members) |
| 1273 | 1310 |
| 1274 def testAffectedFile(self): | 1311 def testAffectedFile(self): |
| 1275 path = presubmit.os.path.join('foo', 'blat.cc') | 1312 path = presubmit.os.path.join('foo', 'blat.cc') |
| 1276 presubmit.os.path.exists(path).AndReturn(True) | 1313 f_path = presubmit.os.path.join(self.fake_root_dir, path) |
| 1277 presubmit.os.path.isdir(path).AndReturn(False) | 1314 presubmit.os.path.exists(f_path).AndReturn(True) |
| 1278 presubmit.gclient_utils.FileRead(path, 'rU').AndReturn('whatever\ncookie') | 1315 presubmit.os.path.isdir(f_path).AndReturn(False) |
| 1279 presubmit.scm.SVN.CaptureInfo(path).AndReturn( | 1316 presubmit.gclient_utils.FileRead(f_path, 'rU').AndReturn('whatever\ncookie') |
| 1317 presubmit.scm.SVN._CaptureInfo([path], self.fake_root_dir).AndReturn( |
| 1280 {'URL': 'svn:/foo/foo/blat.cc'}) | 1318 {'URL': 'svn:/foo/foo/blat.cc'}) |
| 1281 self.mox.ReplayAll() | 1319 self.mox.ReplayAll() |
| 1282 af = presubmit.SvnAffectedFile('foo/blat.cc', 'M') | 1320 af = presubmit.SvnAffectedFile('foo/blat.cc', 'M', self.fake_root_dir) |
| 1283 self.assertEquals('svn:/foo/foo/blat.cc', af.ServerPath()) | 1321 self.assertEquals('svn:/foo/foo/blat.cc', af.ServerPath()) |
| 1284 self.assertEquals(presubmit.normpath('foo/blat.cc'), af.LocalPath()) | 1322 self.assertEquals(presubmit.normpath('foo/blat.cc'), af.LocalPath()) |
| 1285 self.assertEquals('M', af.Action()) | 1323 self.assertEquals('M', af.Action()) |
| 1286 self.assertEquals(['whatever', 'cookie'], af.NewContents()) | 1324 self.assertEquals(['whatever', 'cookie'], af.NewContents()) |
| 1287 | 1325 |
| 1288 def testAffectedFileNotExists(self): | 1326 def testAffectedFileNotExists(self): |
| 1289 presubmit.os.path.exists('notfound.cc').AndReturn(False) | 1327 notfound = 'notfound.cc' |
| 1290 presubmit.gclient_utils.FileRead('notfound.cc', 'rU').AndRaise(IOError) | 1328 f_notfound = presubmit.os.path.join(self.fake_root_dir, notfound) |
| 1329 presubmit.os.path.exists(f_notfound).AndReturn(False) |
| 1330 presubmit.gclient_utils.FileRead(f_notfound, 'rU').AndRaise(IOError) |
| 1291 self.mox.ReplayAll() | 1331 self.mox.ReplayAll() |
| 1292 af = presubmit.AffectedFile('notfound.cc', 'A') | 1332 af = presubmit.AffectedFile(notfound, 'A', self.fake_root_dir) |
| 1293 self.assertEquals('', af.ServerPath()) | 1333 self.assertEquals('', af.ServerPath()) |
| 1294 self.assertEquals([], af.NewContents()) | 1334 self.assertEquals([], af.NewContents()) |
| 1295 | 1335 |
| 1296 def testProperty(self): | 1336 def testProperty(self): |
| 1297 presubmit.scm.SVN.GetFileProperty('foo.cc', 'svn:secret-property' | 1337 presubmit.scm.SVN.GetFileProperty( |
| 1338 'foo.cc', 'svn:secret-property', self.fake_root_dir |
| 1298 ).AndReturn('secret-property-value') | 1339 ).AndReturn('secret-property-value') |
| 1299 self.mox.ReplayAll() | 1340 self.mox.ReplayAll() |
| 1300 affected_file = presubmit.SvnAffectedFile('foo.cc', 'A') | 1341 affected_file = presubmit.SvnAffectedFile('foo.cc', 'A', self.fake_root_dir) |
| 1301 # Verify cache coherency. | 1342 # Verify cache coherency. |
| 1302 self.assertEquals('secret-property-value', | 1343 self.assertEquals('secret-property-value', |
| 1303 affected_file.Property('svn:secret-property')) | 1344 affected_file.Property('svn:secret-property')) |
| 1304 self.assertEquals('secret-property-value', | 1345 self.assertEquals('secret-property-value', |
| 1305 affected_file.Property('svn:secret-property')) | 1346 affected_file.Property('svn:secret-property')) |
| 1306 | 1347 |
| 1307 def testIsDirectoryNotExists(self): | 1348 def testIsDirectoryNotExists(self): |
| 1308 presubmit.os.path.exists('foo.cc').AndReturn(False) | 1349 filename = 'foo.cc' |
| 1309 presubmit.scm.SVN.CaptureInfo('foo.cc').AndReturn({}) | 1350 f_filename = presubmit.os.path.join(self.fake_root_dir, filename) |
| 1351 presubmit.os.path.exists(f_filename).AndReturn(False) |
| 1352 presubmit.scm.SVN._CaptureInfo([filename], self.fake_root_dir).AndReturn({}) |
| 1310 self.mox.ReplayAll() | 1353 self.mox.ReplayAll() |
| 1311 affected_file = presubmit.SvnAffectedFile('foo.cc', 'A') | 1354 affected_file = presubmit.SvnAffectedFile(filename, 'A', self.fake_root_dir) |
| 1312 # Verify cache coherency. | 1355 # Verify cache coherency. |
| 1313 self.failIf(affected_file.IsDirectory()) | 1356 self.failIf(affected_file.IsDirectory()) |
| 1314 self.failIf(affected_file.IsDirectory()) | 1357 self.failIf(affected_file.IsDirectory()) |
| 1315 | 1358 |
| 1316 def testIsDirectory(self): | 1359 def testIsDirectory(self): |
| 1317 presubmit.os.path.exists('foo.cc').AndReturn(True) | 1360 filename = 'foo.cc' |
| 1318 presubmit.os.path.isdir('foo.cc').AndReturn(True) | 1361 f_filename = presubmit.os.path.join(self.fake_root_dir, filename) |
| 1362 presubmit.os.path.exists(f_filename).AndReturn(True) |
| 1363 presubmit.os.path.isdir(f_filename).AndReturn(True) |
| 1319 self.mox.ReplayAll() | 1364 self.mox.ReplayAll() |
| 1320 affected_file = presubmit.SvnAffectedFile('foo.cc', 'A') | 1365 affected_file = presubmit.SvnAffectedFile(filename, 'A', self.fake_root_dir) |
| 1321 # Verify cache coherency. | 1366 # Verify cache coherency. |
| 1322 self.failUnless(affected_file.IsDirectory()) | 1367 self.failUnless(affected_file.IsDirectory()) |
| 1323 self.failUnless(affected_file.IsDirectory()) | 1368 self.failUnless(affected_file.IsDirectory()) |
| 1324 | 1369 |
| 1325 def testIsTextFile(self): | 1370 def testIsTextFile(self): |
| 1326 files = [presubmit.SvnAffectedFile('foo/blat.txt', 'M'), | 1371 files = [ |
| 1327 presubmit.SvnAffectedFile('foo/binary.blob', 'M'), | 1372 presubmit.SvnAffectedFile('foo/blat.txt', 'M', self.fake_root_dir), |
| 1328 presubmit.SvnAffectedFile('blat/flop.txt', 'D')] | 1373 presubmit.SvnAffectedFile('foo/binary.blob', 'M', self.fake_root_dir), |
| 1374 presubmit.SvnAffectedFile('blat/flop.txt', 'D', self.fake_root_dir) |
| 1375 ] |
| 1329 blat = presubmit.os.path.join('foo', 'blat.txt') | 1376 blat = presubmit.os.path.join('foo', 'blat.txt') |
| 1330 blob = presubmit.os.path.join('foo', 'binary.blob') | 1377 blob = presubmit.os.path.join('foo', 'binary.blob') |
| 1331 presubmit.os.path.exists(blat).AndReturn(True) | 1378 f_blat = presubmit.os.path.join(self.fake_root_dir, blat) |
| 1332 presubmit.os.path.isdir(blat).AndReturn(False) | 1379 f_blob = presubmit.os.path.join(self.fake_root_dir, blob) |
| 1333 presubmit.os.path.exists(blob).AndReturn(True) | 1380 presubmit.os.path.exists(f_blat).AndReturn(True) |
| 1334 presubmit.os.path.isdir(blob).AndReturn(False) | 1381 presubmit.os.path.isdir(f_blat).AndReturn(False) |
| 1335 presubmit.scm.SVN.GetFileProperty(blat, 'svn:mime-type').AndReturn(None) | 1382 presubmit.os.path.exists(f_blob).AndReturn(True) |
| 1336 presubmit.scm.SVN.GetFileProperty(blob, 'svn:mime-type' | 1383 presubmit.os.path.isdir(f_blob).AndReturn(False) |
| 1384 presubmit.scm.SVN.GetFileProperty(blat, 'svn:mime-type', self.fake_root_dir |
| 1385 ).AndReturn(None) |
| 1386 presubmit.scm.SVN.GetFileProperty(blob, 'svn:mime-type', self.fake_root_dir |
| 1337 ).AndReturn('application/octet-stream') | 1387 ).AndReturn('application/octet-stream') |
| 1338 self.mox.ReplayAll() | 1388 self.mox.ReplayAll() |
| 1339 | 1389 |
| 1340 output = filter(lambda x: x.IsTextFile(), files) | 1390 output = filter(lambda x: x.IsTextFile(), files) |
| 1341 self.assertEquals(1, len(output)) | 1391 self.assertEquals(1, len(output)) |
| 1342 self.assertEquals(files[0], output[0]) | 1392 self.assertEquals(files[0], output[0]) |
| 1343 | 1393 |
| 1344 | 1394 |
| 1345 class ChangeUnittest(PresubmitTestsBase): | 1395 class ChangeUnittest(PresubmitTestsBase): |
| 1346 def testMembersChanged(self): | 1396 def testMembersChanged(self): |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1523 results2 = check(input_api2, presubmit.OutputApi) | 1573 results2 = check(input_api2, presubmit.OutputApi) |
| 1524 self.assertEquals(len(results2), 1) | 1574 self.assertEquals(len(results2), 1) |
| 1525 self.assertEquals(results2[0].__class__, error_type) | 1575 self.assertEquals(results2[0].__class__, error_type) |
| 1526 | 1576 |
| 1527 def SvnPropertyTest(self, check, property_name, value1, value2, committing, | 1577 def SvnPropertyTest(self, check, property_name, value1, value2, committing, |
| 1528 error_type, use_source_file): | 1578 error_type, use_source_file): |
| 1529 change1 = presubmit.SvnChange( | 1579 change1 = presubmit.SvnChange( |
| 1530 'mychange', '', self.fake_root_dir, [], 0, 0, None) | 1580 'mychange', '', self.fake_root_dir, [], 0, 0, None) |
| 1531 input_api1 = self.MockInputApi(change1, committing) | 1581 input_api1 = self.MockInputApi(change1, committing) |
| 1532 files1 = [ | 1582 files1 = [ |
| 1533 presubmit.SvnAffectedFile('foo/bar.cc', 'A'), | 1583 presubmit.SvnAffectedFile('foo/bar.cc', 'A', self.fake_root_dir), |
| 1534 presubmit.SvnAffectedFile('foo.cc', 'M'), | 1584 presubmit.SvnAffectedFile('foo.cc', 'M', self.fake_root_dir), |
| 1535 ] | 1585 ] |
| 1536 if use_source_file: | 1586 if use_source_file: |
| 1537 input_api1.AffectedSourceFiles(None).AndReturn(files1) | 1587 input_api1.AffectedSourceFiles(None).AndReturn(files1) |
| 1538 else: | 1588 else: |
| 1539 input_api1.AffectedFiles(include_deleted=False).AndReturn(files1) | 1589 input_api1.AffectedFiles(include_deleted=False).AndReturn(files1) |
| 1540 presubmit.scm.SVN.GetFileProperty(presubmit.normpath('foo/bar.cc'), | 1590 presubmit.scm.SVN.GetFileProperty( |
| 1541 property_name).AndReturn(value1) | 1591 presubmit.normpath('foo/bar.cc'), property_name, self.fake_root_dir |
| 1542 presubmit.scm.SVN.GetFileProperty(presubmit.normpath('foo.cc'), | 1592 ).AndReturn(value1) |
| 1543 property_name).AndReturn(value1) | 1593 presubmit.scm.SVN.GetFileProperty( |
| 1594 presubmit.normpath('foo.cc'), property_name, self.fake_root_dir |
| 1595 ).AndReturn(value1) |
| 1544 change2 = presubmit.SvnChange( | 1596 change2 = presubmit.SvnChange( |
| 1545 'mychange', '', self.fake_root_dir, [], 0, 0, None) | 1597 'mychange', '', self.fake_root_dir, [], 0, 0, None) |
| 1546 input_api2 = self.MockInputApi(change2, committing) | 1598 input_api2 = self.MockInputApi(change2, committing) |
| 1547 files2 = [ | 1599 files2 = [ |
| 1548 presubmit.SvnAffectedFile('foo/bar.cc', 'A'), | 1600 presubmit.SvnAffectedFile('foo/bar.cc', 'A', self.fake_root_dir), |
| 1549 presubmit.SvnAffectedFile('foo.cc', 'M'), | 1601 presubmit.SvnAffectedFile('foo.cc', 'M', self.fake_root_dir), |
| 1550 ] | 1602 ] |
| 1551 if use_source_file: | 1603 if use_source_file: |
| 1552 input_api2.AffectedSourceFiles(None).AndReturn(files2) | 1604 input_api2.AffectedSourceFiles(None).AndReturn(files2) |
| 1553 else: | 1605 else: |
| 1554 input_api2.AffectedFiles(include_deleted=False).AndReturn(files2) | 1606 input_api2.AffectedFiles(include_deleted=False).AndReturn(files2) |
| 1555 | 1607 |
| 1556 presubmit.scm.SVN.GetFileProperty(presubmit.normpath('foo/bar.cc'), | 1608 presubmit.scm.SVN.GetFileProperty( |
| 1557 property_name).AndReturn(value2) | 1609 presubmit.normpath('foo/bar.cc'), property_name, self.fake_root_dir |
| 1558 presubmit.scm.SVN.GetFileProperty(presubmit.normpath('foo.cc'), | 1610 ).AndReturn(value2) |
| 1559 property_name).AndReturn(value2) | 1611 presubmit.scm.SVN.GetFileProperty( |
| 1612 presubmit.normpath('foo.cc'), property_name, self.fake_root_dir |
| 1613 ).AndReturn(value2) |
| 1560 self.mox.ReplayAll() | 1614 self.mox.ReplayAll() |
| 1561 | 1615 |
| 1562 results1 = check(input_api1, presubmit.OutputApi, None) | 1616 results1 = check(input_api1, presubmit.OutputApi, None) |
| 1563 self.assertEquals(results1, []) | 1617 self.assertEquals(results1, []) |
| 1564 results2 = check(input_api2, presubmit.OutputApi, None) | 1618 results2 = check(input_api2, presubmit.OutputApi, None) |
| 1565 self.assertEquals(len(results2), 1) | 1619 self.assertEquals(len(results2), 1) |
| 1566 self.assertEquals(results2[0].__class__, error_type) | 1620 self.assertEquals(results2[0].__class__, error_type) |
| 1567 | 1621 |
| 1568 def testCannedCheckChangeHasBugField(self): | 1622 def testCannedCheckChangeHasBugField(self): |
| 1569 self.DescriptionTest(presubmit_canned_checks.CheckChangeHasBugField, | 1623 self.DescriptionTest(presubmit_canned_checks.CheckChangeHasBugField, |
| (...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1678 # Override the mock of these functions. | 1732 # Override the mock of these functions. |
| 1679 input_api1.FilterSourceFile = lambda x: x | 1733 input_api1.FilterSourceFile = lambda x: x |
| 1680 input_api1.AffectedFiles = test | 1734 input_api1.AffectedFiles = test |
| 1681 self.mox.ReplayAll() | 1735 self.mox.ReplayAll() |
| 1682 | 1736 |
| 1683 results1 = presubmit_canned_checks.CheckChangeHasNoTabs(input_api1, | 1737 results1 = presubmit_canned_checks.CheckChangeHasNoTabs(input_api1, |
| 1684 presubmit.OutputApi, None) | 1738 presubmit.OutputApi, None) |
| 1685 self.assertEquals(len(results1), 1) | 1739 self.assertEquals(len(results1), 1) |
| 1686 self.assertEquals(results1[0].__class__, | 1740 self.assertEquals(results1[0].__class__, |
| 1687 presubmit.OutputApi.PresubmitPromptWarning) | 1741 presubmit.OutputApi.PresubmitPromptWarning) |
| 1688 # pylint: disable=W0212 | |
| 1689 self.assertEquals(results1[0]._long_text, | 1742 self.assertEquals(results1[0]._long_text, |
| 1690 'makefile.foo, line 46') | 1743 'makefile.foo, line 46') |
| 1691 | 1744 |
| 1692 def testCannedCheckLongLines(self): | 1745 def testCannedCheckLongLines(self): |
| 1693 check = lambda x, y, z: presubmit_canned_checks.CheckLongLines(x, y, 10, z) | 1746 check = lambda x, y, z: presubmit_canned_checks.CheckLongLines(x, y, 10, z) |
| 1694 self.ContentTest(check, '0123456789', '01234567890', | 1747 self.ContentTest(check, '0123456789', '01234567890', |
| 1695 presubmit.OutputApi.PresubmitPromptWarning) | 1748 presubmit.OutputApi.PresubmitPromptWarning) |
| 1696 | 1749 |
| 1697 def testCannedCheckLongLinesLF(self): | 1750 def testCannedCheckLongLinesLF(self): |
| 1698 check = lambda x, y, z: presubmit_canned_checks.CheckLongLines(x, y, 10, z) | 1751 check = lambda x, y, z: presubmit_canned_checks.CheckLongLines(x, y, 10, z) |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1829 check = presubmit_canned_checks.CheckSvnModifiedDirectories | 1882 check = presubmit_canned_checks.CheckSvnModifiedDirectories |
| 1830 results = check(input_api, presubmit.OutputApi, None) | 1883 results = check(input_api, presubmit.OutputApi, None) |
| 1831 self.assertEquals(len(results), 1) | 1884 self.assertEquals(len(results), 1) |
| 1832 self.assertEquals(results[0].__class__, | 1885 self.assertEquals(results[0].__class__, |
| 1833 presubmit.OutputApi.PresubmitPromptWarning) | 1886 presubmit.OutputApi.PresubmitPromptWarning) |
| 1834 | 1887 |
| 1835 def testCheckSvnForCommonMimeTypes(self): | 1888 def testCheckSvnForCommonMimeTypes(self): |
| 1836 self.mox.StubOutWithMock(presubmit_canned_checks, 'CheckSvnProperty') | 1889 self.mox.StubOutWithMock(presubmit_canned_checks, 'CheckSvnProperty') |
| 1837 input_api = self.MockInputApi(None, False) | 1890 input_api = self.MockInputApi(None, False) |
| 1838 output_api = presubmit.OutputApi() | 1891 output_api = presubmit.OutputApi() |
| 1839 A = lambda x: presubmit.AffectedFile(x, 'M') | 1892 A = lambda x: presubmit.AffectedFile(x, 'M', self.fake_root_dir) |
| 1840 files = [ | 1893 files = [ |
| 1841 A('a.pdf'), A('b.bmp'), A('c.gif'), A('d.png'), A('e.jpg'), A('f.jpe'), | 1894 A('a.pdf'), A('b.bmp'), A('c.gif'), A('d.png'), A('e.jpg'), A('f.jpe'), |
| 1842 A('random'), A('g.jpeg'), A('h.ico'), | 1895 A('random'), A('g.jpeg'), A('h.ico'), |
| 1843 ] | 1896 ] |
| 1844 input_api.AffectedFiles(include_deletes=False).AndReturn(files) | 1897 input_api.AffectedFiles(include_deletes=False).AndReturn(files) |
| 1845 presubmit_canned_checks.CheckSvnProperty( | 1898 presubmit_canned_checks.CheckSvnProperty( |
| 1846 input_api, output_api, 'svn:mime-type', 'application/pdf', [files[0]] | 1899 input_api, output_api, 'svn:mime-type', 'application/pdf', [files[0]] |
| 1847 ).AndReturn([1]) | 1900 ).AndReturn([1]) |
| 1848 presubmit_canned_checks.CheckSvnProperty( | 1901 presubmit_canned_checks.CheckSvnProperty( |
| 1849 input_api, output_api, 'svn:mime-type', 'image/bmp', [files[1]] | 1902 input_api, output_api, 'svn:mime-type', 'image/bmp', [files[1]] |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1968 ['pyyyyython', '-m', 'test_module'], cwd=None, env=None, | 2021 ['pyyyyython', '-m', 'test_module'], cwd=None, env=None, |
| 1969 stderr=input_api.subprocess.STDOUT).AndRaise( | 2022 stderr=input_api.subprocess.STDOUT).AndRaise( |
| 1970 input_api.subprocess.CalledProcessError()) | 2023 input_api.subprocess.CalledProcessError()) |
| 1971 self.mox.ReplayAll() | 2024 self.mox.ReplayAll() |
| 1972 | 2025 |
| 1973 results = presubmit_canned_checks.RunPythonUnitTests( | 2026 results = presubmit_canned_checks.RunPythonUnitTests( |
| 1974 input_api, presubmit.OutputApi, ['test_module']) | 2027 input_api, presubmit.OutputApi, ['test_module']) |
| 1975 self.assertEquals(len(results), 1) | 2028 self.assertEquals(len(results), 1) |
| 1976 self.assertEquals(results[0].__class__, | 2029 self.assertEquals(results[0].__class__, |
| 1977 presubmit.OutputApi.PresubmitNotifyResult) | 2030 presubmit.OutputApi.PresubmitNotifyResult) |
| 1978 # pylint: disable=W0212 | |
| 1979 self.assertEquals('test_module failed!\nfoo', results[0]._message) | 2031 self.assertEquals('test_module failed!\nfoo', results[0]._message) |
| 1980 | 2032 |
| 1981 def testRunPythonUnitTestsFailureCommitting(self): | 2033 def testRunPythonUnitTestsFailureCommitting(self): |
| 1982 input_api = self.MockInputApi(None, True) | 2034 input_api = self.MockInputApi(None, True) |
| 1983 input_api.subprocess.check_output( | 2035 input_api.subprocess.check_output( |
| 1984 ['pyyyyython', '-m', 'test_module'], cwd=None, env=None, | 2036 ['pyyyyython', '-m', 'test_module'], cwd=None, env=None, |
| 1985 stderr=input_api.subprocess.STDOUT).AndRaise( | 2037 stderr=input_api.subprocess.STDOUT).AndRaise( |
| 1986 input_api.subprocess.CalledProcessError()) | 2038 input_api.subprocess.CalledProcessError()) |
| 1987 self.mox.ReplayAll() | 2039 self.mox.ReplayAll() |
| 1988 | 2040 |
| 1989 results = presubmit_canned_checks.RunPythonUnitTests( | 2041 results = presubmit_canned_checks.RunPythonUnitTests( |
| 1990 input_api, presubmit.OutputApi, ['test_module']) | 2042 input_api, presubmit.OutputApi, ['test_module']) |
| 1991 self.assertEquals(len(results), 1) | 2043 self.assertEquals(len(results), 1) |
| 1992 self.assertEquals(results[0].__class__, presubmit.OutputApi.PresubmitError) | 2044 self.assertEquals(results[0].__class__, presubmit.OutputApi.PresubmitError) |
| 1993 # pylint: disable=W0212 | |
| 1994 self.assertEquals('test_module failed!\nfoo', results[0]._message) | 2045 self.assertEquals('test_module failed!\nfoo', results[0]._message) |
| 1995 | 2046 |
| 1996 def testRunPythonUnitTestsSuccess(self): | 2047 def testRunPythonUnitTestsSuccess(self): |
| 1997 input_api = self.MockInputApi(None, False) | 2048 input_api = self.MockInputApi(None, False) |
| 1998 input_api.cStringIO = self.mox.CreateMock(presubmit.cStringIO) | 2049 input_api.cStringIO = self.mox.CreateMock(presubmit.cStringIO) |
| 1999 input_api.unittest = self.mox.CreateMock(unittest) | 2050 input_api.unittest = self.mox.CreateMock(unittest) |
| 2000 input_api.subprocess.check_output( | 2051 input_api.subprocess.check_output( |
| 2001 ['pyyyyython', '-m', 'test_module'], cwd=None, env=None, | 2052 ['pyyyyython', '-m', 'test_module'], cwd=None, env=None, |
| 2002 stderr=input_api.subprocess.STDOUT) | 2053 stderr=input_api.subprocess.STDOUT) |
| 2003 self.mox.ReplayAll() | 2054 self.mox.ReplayAll() |
| (...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2224 self.mox.ReplayAll() | 2275 self.mox.ReplayAll() |
| 2225 results = presubmit_canned_checks.PanProjectChecks( | 2276 results = presubmit_canned_checks.PanProjectChecks( |
| 2226 input_api, | 2277 input_api, |
| 2227 presubmit.OutputApi, | 2278 presubmit.OutputApi, |
| 2228 excluded_paths=None, | 2279 excluded_paths=None, |
| 2229 text_files=None, | 2280 text_files=None, |
| 2230 license_header=None, | 2281 license_header=None, |
| 2231 project_name=None, | 2282 project_name=None, |
| 2232 owners_check=True) | 2283 owners_check=True) |
| 2233 self.assertEqual(1, len(results)) | 2284 self.assertEqual(1, len(results)) |
| 2234 # pylint: disable=W0212 | |
| 2235 self.assertEqual( | 2285 self.assertEqual( |
| 2236 'Found line ending with white spaces in:', results[0]._message) | 2286 'Found line ending with white spaces in:', results[0]._message) |
| 2237 self.checkstdout('') | 2287 self.checkstdout('') |
| 2238 | 2288 |
| 2239 | 2289 |
| 2240 if __name__ == '__main__': | 2290 if __name__ == '__main__': |
| 2241 import unittest | 2291 import unittest |
| 2242 unittest.main() | 2292 unittest.main() |
| OLD | NEW |