Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(161)

Side by Side Diff: tests/presubmit_unittest.py

Issue 125051: Fix gcl breakage. (Closed)
Patch Set: Created 11 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tests/gcl_unittest.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 StringIO 9 import StringIO
10 import unittest 10 import unittest
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
49 presubmit.os.path.splitext = os_path_splitext 49 presubmit.os.path.splitext = os_path_splitext
50 self.mox.StubOutWithMock(presubmit, 'sys') 50 self.mox.StubOutWithMock(presubmit, 'sys')
51 # Special mocks. 51 # Special mocks.
52 def MockAbsPath(f): 52 def MockAbsPath(f):
53 return f 53 return f
54 presubmit.os.path.abspath = MockAbsPath 54 presubmit.os.path.abspath = MockAbsPath
55 self.fake_root_dir = self.RootDir() 55 self.fake_root_dir = self.RootDir()
56 self.mox.StubOutWithMock(presubmit.gclient, 'CaptureSVNInfo') 56 self.mox.StubOutWithMock(presubmit.gclient, 'CaptureSVNInfo')
57 self.mox.StubOutWithMock(presubmit.gcl, 'GetSVNFileProperty') 57 self.mox.StubOutWithMock(presubmit.gcl, 'GetSVNFileProperty')
58 self.mox.StubOutWithMock(presubmit.gcl, 'ReadFile') 58 self.mox.StubOutWithMock(presubmit.gcl, 'ReadFile')
59 self.mox.StubOutWithMock(presubmit.gcl, 'ChangeInfo') 59 # Stub any non-getter function in gcl.ChangeInfo.
60 60 to_skip = lambda x: not x.startswith('_') and not x.startswith('Get')
61 def MakeChangeInfo(self, name, issue, patchset, description): 61 for member in filter(to_skip, dir(presubmit.gcl.ChangeInfo)):
62 ci = self.mox.CreateMock(presubmit.gcl.ChangeInfo) 62 self.mox.StubOutWithMock(presubmit.gcl.ChangeInfo, member)
63 ci.name = name 63
64 ci.issue = issue 64 def MakeChangeInfo(self, name, issue, patchset, description, files):
65 ci.patchset = patchset 65 ci = presubmit.gcl.ChangeInfo(name, issue, patchset, description, files,
66 ci.description = description 66 self.fake_root_dir)
67 ci.patch = None
68 ci.local_root = self.fake_root_dir
69 return ci 67 return ci
70 68
71 69
72 class PresubmitUnittest(PresubmitTestsBase): 70 class PresubmitUnittest(PresubmitTestsBase):
73 """General presubmit_support.py tests (excluding InputApi and OutputApi).""" 71 """General presubmit_support.py tests (excluding InputApi and OutputApi)."""
74 def testMembersChanged(self): 72 def testMembersChanged(self):
75 self.mox.ReplayAll() 73 self.mox.ReplayAll()
76 members = [ 74 members = [
77 'AffectedFile', 'DoPresubmitChecks', 'GclChange', 'InputApi', 75 'AffectedFile', 'DoPresubmitChecks', 'GclChange', 'InputApi',
78 'ListRelevantPresubmitFiles', 'Main', 'NotImplementedException', 76 'ListRelevantPresubmitFiles', 'Main', 'NotImplementedException',
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
165 notfound, 'svn:mime-type').AndReturn('') 163 notfound, 'svn:mime-type').AndReturn('')
166 presubmit.gclient.CaptureSVNInfo(blat).AndReturn( 164 presubmit.gclient.CaptureSVNInfo(blat).AndReturn(
167 {'URL': 'svn:/foo/foo/blat.cc'}) 165 {'URL': 'svn:/foo/foo/blat.cc'})
168 presubmit.gclient.CaptureSVNInfo(binary).AndReturn( 166 presubmit.gclient.CaptureSVNInfo(binary).AndReturn(
169 {'URL': 'svn:/foo/binary.dll'}) 167 {'URL': 'svn:/foo/binary.dll'})
170 presubmit.gclient.CaptureSVNInfo(notfound).AndReturn({}) 168 presubmit.gclient.CaptureSVNInfo(notfound).AndReturn({})
171 presubmit.gclient.CaptureSVNInfo(flap).AndReturn( 169 presubmit.gclient.CaptureSVNInfo(flap).AndReturn(
172 {'URL': 'svn:/foo/boo/flap.h'}) 170 {'URL': 'svn:/foo/boo/flap.h'})
173 presubmit.gcl.ReadFile(blat).AndReturn('boo!\nahh?') 171 presubmit.gcl.ReadFile(blat).AndReturn('boo!\nahh?')
174 presubmit.gcl.ReadFile(notfound).AndReturn('look!\nthere?') 172 presubmit.gcl.ReadFile(notfound).AndReturn('look!\nthere?')
175 ci = self.MakeChangeInfo('mychange', 0, 0, '\n'.join(description_lines)) 173 ci = self.MakeChangeInfo('mychange', 0, 0, '\n'.join(description_lines),
176 ci.GetLocalRoot().AndReturn(self.fake_root_dir) 174 files)
177 ci.GetFiles().AndReturn(files)
178 self.mox.ReplayAll() 175 self.mox.ReplayAll()
179 176
180 change = presubmit.GclChange(ci) 177 change = presubmit.GclChange(ci)
181 178
182 self.failUnless(change.Name() == 'mychange') 179 self.failUnless(change.Name() == 'mychange')
183 self.failUnless(change.DescriptionText() == 180 self.failUnless(change.DescriptionText() ==
184 'Hello there\nthis is a change\nand some more regular text') 181 'Hello there\nthis is a change\nand some more regular text')
185 self.failUnless(change.FullDescriptionText() == 182 self.failUnless(change.FullDescriptionText() ==
186 '\n'.join(description_lines)) 183 '\n'.join(description_lines))
187 184
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 self.assertEquals(rhs_lines[3][2], 'there?') 230 self.assertEquals(rhs_lines[3][2], 'there?')
234 231
235 def testExecPresubmitScript(self): 232 def testExecPresubmitScript(self):
236 description_lines = ('Hello there', 233 description_lines = ('Hello there',
237 'this is a change', 234 'this is a change',
238 'STORY=http://tracker/123') 235 'STORY=http://tracker/123')
239 files = [ 236 files = [
240 ['A', 'foo\\blat.cc'], 237 ['A', 'foo\\blat.cc'],
241 ] 238 ]
242 fake_presubmit = presubmit.os.path.join(self.fake_root_dir, 'PRESUBMIT.py') 239 fake_presubmit = presubmit.os.path.join(self.fake_root_dir, 'PRESUBMIT.py')
243 ci = self.MakeChangeInfo('mychange', 0, 0, '\n'.join(description_lines)) 240 ci = self.MakeChangeInfo('mychange', 0, 0, '\n'.join(description_lines),
244 ci.GetLocalRoot().AndReturn(self.fake_root_dir) 241 files)
245 ci.GetFiles().AndReturn(files)
246 ci.GetLocalRoot().AndReturn(self.fake_root_dir)
247 ci.GetFiles().AndReturn(files)
248 self.mox.ReplayAll() 242 self.mox.ReplayAll()
249 243
250 executer = presubmit.PresubmitExecuter(ci, False) 244 executer = presubmit.PresubmitExecuter(ci, False)
251 self.failIf(executer.ExecPresubmitScript('', fake_presubmit)) 245 self.failIf(executer.ExecPresubmitScript('', fake_presubmit))
252 # No error if no on-upload entry point 246 # No error if no on-upload entry point
253 self.failIf(executer.ExecPresubmitScript( 247 self.failIf(executer.ExecPresubmitScript(
254 ('def CheckChangeOnCommit(input_api, output_api):\n' 248 ('def CheckChangeOnCommit(input_api, output_api):\n'
255 ' return (output_api.PresubmitError("!!"))\n'), 249 ' return (output_api.PresubmitError("!!"))\n'),
256 fake_presubmit 250 fake_presubmit
257 )) 251 ))
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 ['A', join('haspresubmit', 'blat.cc')], 297 ['A', join('haspresubmit', 'blat.cc')],
304 ] 298 ]
305 haspresubmit_path = join(self.fake_root_dir, 'haspresubmit', 'PRESUBMIT.py') 299 haspresubmit_path = join(self.fake_root_dir, 'haspresubmit', 'PRESUBMIT.py')
306 root_path = join(self.fake_root_dir, 'PRESUBMIT.py') 300 root_path = join(self.fake_root_dir, 'PRESUBMIT.py')
307 presubmit.os.path.isfile(root_path).AndReturn(True) 301 presubmit.os.path.isfile(root_path).AndReturn(True)
308 presubmit.os.path.isfile(haspresubmit_path).AndReturn(True) 302 presubmit.os.path.isfile(haspresubmit_path).AndReturn(True)
309 presubmit.gcl.ReadFile(root_path, 303 presubmit.gcl.ReadFile(root_path,
310 'rU').AndReturn(self.presubmit_text) 304 'rU').AndReturn(self.presubmit_text)
311 presubmit.gcl.ReadFile(haspresubmit_path, 305 presubmit.gcl.ReadFile(haspresubmit_path,
312 'rU').AndReturn(self.presubmit_text) 306 'rU').AndReturn(self.presubmit_text)
313 ci = self.MakeChangeInfo('mychange', 0, 0, '\n'.join(description_lines)) 307 ci = self.MakeChangeInfo('mychange', 0, 0, '\n'.join(description_lines),
314 ci.GetFileNames().AndReturn([item[1] for item in files]) 308 files)
315 ci.GetLocalRoot().AndReturn(self.fake_root_dir)
316 ci.GetFiles().AndReturn(files)
317 self.mox.ReplayAll() 309 self.mox.ReplayAll()
318 310
319 output = StringIO.StringIO() 311 output = StringIO.StringIO()
320 input = StringIO.StringIO('y\n') 312 input = StringIO.StringIO('y\n')
321 313
322 self.failIf(presubmit.DoPresubmitChecks(ci, False, True, output, input, 314 self.failIf(presubmit.DoPresubmitChecks(ci, False, True, output, input,
323 None, False)) 315 None, False))
324 self.assertEqual(output.getvalue().count('!!'), 2) 316 self.assertEqual(output.getvalue().count('!!'), 2)
325 317
326 def testDoPresubmitChecksPromptsAfterWarnings(self): 318 def testDoPresubmitChecksPromptsAfterWarnings(self):
327 join = presubmit.os.path.join 319 join = presubmit.os.path.join
328 description_lines = ('Hello there', 320 description_lines = ('Hello there',
329 'this is a change', 321 'this is a change',
330 'NOSUCHKEY=http://tracker/123') 322 'NOSUCHKEY=http://tracker/123')
331 files = [ 323 files = [
332 ['A', join('haspresubmit', 'blat.cc')], 324 ['A', join('haspresubmit', 'blat.cc')],
333 ] 325 ]
334 presubmit_path = join(self.fake_root_dir, 'PRESUBMIT.py') 326 presubmit_path = join(self.fake_root_dir, 'PRESUBMIT.py')
335 haspresubmit_path = join(self.fake_root_dir, 'haspresubmit', 'PRESUBMIT.py') 327 haspresubmit_path = join(self.fake_root_dir, 'haspresubmit', 'PRESUBMIT.py')
336 ci = self.MakeChangeInfo('mychange', 0, 0, '\n'.join(description_lines)) 328 ci = self.MakeChangeInfo('mychange', 0, 0, '\n'.join(description_lines),
329 files)
337 for i in range(2): 330 for i in range(2):
338 presubmit.os.path.isfile(presubmit_path).AndReturn(True) 331 presubmit.os.path.isfile(presubmit_path).AndReturn(True)
339 presubmit.os.path.isfile(haspresubmit_path).AndReturn(True) 332 presubmit.os.path.isfile(haspresubmit_path).AndReturn(True)
340 presubmit.gcl.ReadFile(presubmit_path, 'rU' 333 presubmit.gcl.ReadFile(presubmit_path, 'rU'
341 ).AndReturn(self.presubmit_text) 334 ).AndReturn(self.presubmit_text)
342 presubmit.gcl.ReadFile(haspresubmit_path, 'rU' 335 presubmit.gcl.ReadFile(haspresubmit_path, 'rU'
343 ).AndReturn(self.presubmit_text) 336 ).AndReturn(self.presubmit_text)
344 ci.GetFileNames().AndReturn([item[1] for item in files])
345 ci.GetLocalRoot().AndReturn(self.fake_root_dir)
346 ci.GetFiles().AndReturn(files)
347 self.mox.ReplayAll() 337 self.mox.ReplayAll()
348 338
349 output = StringIO.StringIO() 339 output = StringIO.StringIO()
350 input = StringIO.StringIO('n\n') # say no to the warning 340 input = StringIO.StringIO('n\n') # say no to the warning
351 self.failIf(presubmit.DoPresubmitChecks(ci, False, True, output, input, 341 self.failIf(presubmit.DoPresubmitChecks(ci, False, True, output, input,
352 None, True)) 342 None, True))
353 self.assertEqual(output.getvalue().count('??'), 2) 343 self.assertEqual(output.getvalue().count('??'), 2)
354 344
355 output = StringIO.StringIO() 345 output = StringIO.StringIO()
356 input = StringIO.StringIO('y\n') # say yes to the warning 346 input = StringIO.StringIO('y\n') # say yes to the warning
(...skipping 11 matching lines...) Expand all
368 ['A', join('haspresubmit', 'blat.cc')], 358 ['A', join('haspresubmit', 'blat.cc')],
369 ] 359 ]
370 presubmit_path = join(self.fake_root_dir, 'PRESUBMIT.py') 360 presubmit_path = join(self.fake_root_dir, 'PRESUBMIT.py')
371 haspresubmit_path = join(self.fake_root_dir, 'haspresubmit', 361 haspresubmit_path = join(self.fake_root_dir, 'haspresubmit',
372 'PRESUBMIT.py') 362 'PRESUBMIT.py')
373 presubmit.os.path.isfile(presubmit_path).AndReturn(True) 363 presubmit.os.path.isfile(presubmit_path).AndReturn(True)
374 presubmit.os.path.isfile(haspresubmit_path).AndReturn(True) 364 presubmit.os.path.isfile(haspresubmit_path).AndReturn(True)
375 presubmit.gcl.ReadFile(presubmit_path, 'rU').AndReturn(self.presubmit_text) 365 presubmit.gcl.ReadFile(presubmit_path, 'rU').AndReturn(self.presubmit_text)
376 presubmit.gcl.ReadFile(haspresubmit_path, 'rU').AndReturn( 366 presubmit.gcl.ReadFile(haspresubmit_path, 'rU').AndReturn(
377 self.presubmit_text) 367 self.presubmit_text)
378 ci = self.MakeChangeInfo('mychange', 0, 0, '\n'.join(description_lines)) 368 ci = self.MakeChangeInfo('mychange', 0, 0, '\n'.join(description_lines),
379 ci.GetFileNames().AndReturn([item[1] for item in files]) 369 files)
380 ci.GetLocalRoot().AndReturn(self.fake_root_dir)
381 ci.GetFiles().AndReturn(files)
382 self.mox.ReplayAll() 370 self.mox.ReplayAll()
383 371
384 output = StringIO.StringIO() 372 output = StringIO.StringIO()
385 input = StringIO.StringIO() # should be unused 373 input = StringIO.StringIO() # should be unused
386 self.failIf(presubmit.DoPresubmitChecks(ci, False, True, output, input, 374 self.failIf(presubmit.DoPresubmitChecks(ci, False, True, output, input,
387 None, False)) 375 None, False))
388 self.assertEqual(output.getvalue().count('??'), 2) 376 self.assertEqual(output.getvalue().count('??'), 2)
389 self.assertEqual(output.getvalue().count('XX!!XX'), 2) 377 self.assertEqual(output.getvalue().count('XX!!XX'), 2)
390 self.assertEqual(output.getvalue().count('(y/N)'), 0) 378 self.assertEqual(output.getvalue().count('(y/N)'), 0)
391 379
392 def testDoDefaultPresubmitChecks(self): 380 def testDoDefaultPresubmitChecks(self):
393 join = presubmit.os.path.join 381 join = presubmit.os.path.join
394 description_lines = ('Hello there', 382 description_lines = ('Hello there',
395 'this is a change', 383 'this is a change',
396 'STORY=http://tracker/123') 384 'STORY=http://tracker/123')
397 files = [ 385 files = [
398 ['A', join('haspresubmit', 'blat.cc')], 386 ['A', join('haspresubmit', 'blat.cc')],
399 ] 387 ]
400 DEFAULT_SCRIPT = """ 388 DEFAULT_SCRIPT = """
401 def CheckChangeOnUpload(input_api, output_api): 389 def CheckChangeOnUpload(input_api, output_api):
402 return [output_api.PresubmitError("!!")] 390 return [output_api.PresubmitError("!!")]
403 def CheckChangeOnCommit(input_api, output_api): 391 def CheckChangeOnCommit(input_api, output_api):
404 raise Exception("Test error") 392 raise Exception("Test error")
405 """ 393 """
406 presubmit.os.path.isfile(join(self.fake_root_dir, 'PRESUBMIT.py') 394 presubmit.os.path.isfile(join(self.fake_root_dir, 'PRESUBMIT.py')
407 ).AndReturn(False) 395 ).AndReturn(False)
408 presubmit.os.path.isfile(join(self.fake_root_dir, 396 presubmit.os.path.isfile(join(self.fake_root_dir,
409 'haspresubmit', 397 'haspresubmit',
410 'PRESUBMIT.py')).AndReturn(False) 398 'PRESUBMIT.py')).AndReturn(False)
411 ci = self.MakeChangeInfo('mychange', 0, 0, '\n'.join(description_lines)) 399 ci = self.MakeChangeInfo('mychange', 0, 0, '\n'.join(description_lines),
412 ci.GetFileNames().AndReturn([item[1] for item in files]) 400 files)
413 ci.GetLocalRoot().AndReturn(self.fake_root_dir)
414 ci.GetFiles().AndReturn(files)
415 self.mox.ReplayAll() 401 self.mox.ReplayAll()
416 402
417 output = StringIO.StringIO() 403 output = StringIO.StringIO()
418 input = StringIO.StringIO('y\n') 404 input = StringIO.StringIO('y\n')
419 # Always fail. 405 # Always fail.
420 self.failIf(presubmit.DoPresubmitChecks(ci, False, True, output, input, 406 self.failIf(presubmit.DoPresubmitChecks(ci, False, True, output, input,
421 DEFAULT_SCRIPT, False)) 407 DEFAULT_SCRIPT, False))
422 self.assertEquals(output.getvalue().count('!!'), 1) 408 self.assertEquals(output.getvalue().count('!!'), 1)
423 409
424 def testDirectoryHandling(self): 410 def testDirectoryHandling(self):
425 files = [ 411 files = [
426 ['A', 'isdir'], 412 ['A', 'isdir'],
427 ['A', 'isdir\\blat.cc'], 413 ['A', 'isdir\\blat.cc'],
428 ] 414 ]
429 isdir = presubmit.os.path.join(self.fake_root_dir, 'isdir') 415 isdir = presubmit.os.path.join(self.fake_root_dir, 'isdir')
430 blat = presubmit.os.path.join(isdir, 'blat.cc') 416 blat = presubmit.os.path.join(isdir, 'blat.cc')
431 presubmit.os.path.exists(isdir).AndReturn(True) 417 presubmit.os.path.exists(isdir).AndReturn(True)
432 presubmit.os.path.isdir(isdir).AndReturn(True) 418 presubmit.os.path.isdir(isdir).AndReturn(True)
433 presubmit.os.path.exists(blat).AndReturn(True) 419 presubmit.os.path.exists(blat).AndReturn(True)
434 presubmit.os.path.isdir(blat).AndReturn(False) 420 presubmit.os.path.isdir(blat).AndReturn(False)
435 ci = self.MakeChangeInfo('mychange', 0, 0, 'foo') 421 ci = self.MakeChangeInfo('mychange', 0, 0, 'foo', files)
436 ci.GetLocalRoot().AndReturn(self.fake_root_dir)
437 ci.GetFiles().AndReturn(files)
438 self.mox.ReplayAll() 422 self.mox.ReplayAll()
439 423
440 change = presubmit.GclChange(ci) 424 change = presubmit.GclChange(ci)
441 affected_files = change.AffectedFiles(include_dirs=False) 425 affected_files = change.AffectedFiles(include_dirs=False)
442 self.failUnless(len(affected_files) == 1) 426 self.failUnless(len(affected_files) == 1)
443 self.failUnless(affected_files[0].LocalPath().endswith('blat.cc')) 427 self.failUnless(affected_files[0].LocalPath().endswith('blat.cc'))
444 affected_files_and_dirs = change.AffectedFiles(include_dirs=True) 428 affected_files_and_dirs = change.AffectedFiles(include_dirs=True)
445 self.failUnless(len(affected_files_and_dirs) == 2) 429 self.failUnless(len(affected_files_and_dirs) == 2)
446 430
447 def testTags(self): 431 def testTags(self):
(...skipping 21 matching lines...) Expand all
469 input_api.change.DescriptionText())] 453 input_api.change.DescriptionText())]
470 if (input_api.change.FullDescriptionText() != 454 if (input_api.change.FullDescriptionText() !=
471 'Blah Blah\\n\\nSTORY=http://tracker.com/42\\nBUG=boo\\n'): 455 'Blah Blah\\n\\nSTORY=http://tracker.com/42\\nBUG=boo\\n'):
472 return [output_api.PresubmitError('Tag parsing failed. 5 ' + 456 return [output_api.PresubmitError('Tag parsing failed. 5 ' +
473 input_api.change.FullDescriptionText())] 457 input_api.change.FullDescriptionText())]
474 return [output_api.PresubmitNotifyResult(input_api.change.tags['STORY'])] 458 return [output_api.PresubmitNotifyResult(input_api.change.tags['STORY'])]
475 def CheckChangeOnCommit(input_api, output_api): 459 def CheckChangeOnCommit(input_api, output_api):
476 raise Exception("Test error") 460 raise Exception("Test error")
477 """ 461 """
478 ci = self.MakeChangeInfo( 462 ci = self.MakeChangeInfo(
479 'foo', 0, 0, "Blah Blah\n\nSTORY=http://tracker.com/42\nBUG=boo\n") 463 'foo', 0, 0, "Blah Blah\n\nSTORY=http://tracker.com/42\nBUG=boo\n",
480 ci.GetFileNames().AndReturn([]) 464 None)
481 ci.GetLocalRoot().AndReturn(self.fake_root_dir)
482 ci.GetFiles().AndReturn([])
483 self.mox.ReplayAll() 465 self.mox.ReplayAll()
484 466
485 output = StringIO.StringIO() 467 output = StringIO.StringIO()
486 input = StringIO.StringIO('y\n') 468 input = StringIO.StringIO('y\n')
487 self.failUnless(presubmit.DoPresubmitChecks(ci, False, True, output, 469 self.failUnless(presubmit.DoPresubmitChecks(ci, False, True, output,
488 input, DEFAULT_SCRIPT, False)) 470 input, DEFAULT_SCRIPT, False))
489 self.assertEquals(output.getvalue(), 471 self.assertEquals(output.getvalue(),
490 ('Warning, no presubmit.py found.\n' 472 ('Warning, no presubmit.py found.\n'
491 'Running default presubmit script.\n' 473 'Running default presubmit script.\n'
492 '** Presubmit Messages **\n' 474 '** Presubmit Messages **\n'
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
583 presubmit.gcl.GetSVNFileProperty(blat, 'svn:mime-type').AndReturn(None) 565 presubmit.gcl.GetSVNFileProperty(blat, 'svn:mime-type').AndReturn(None)
584 presubmit.gcl.GetSVNFileProperty(readme, 'svn:mime-type').AndReturn(None) 566 presubmit.gcl.GetSVNFileProperty(readme, 'svn:mime-type').AndReturn(None)
585 presubmit.gcl.GetSVNFileProperty(binary, 'svn:mime-type').AndReturn( 567 presubmit.gcl.GetSVNFileProperty(binary, 'svn:mime-type').AndReturn(
586 'application/octet-stream') 568 'application/octet-stream')
587 presubmit.gcl.GetSVNFileProperty(weird, 'svn:mime-type').AndReturn(None) 569 presubmit.gcl.GetSVNFileProperty(weird, 'svn:mime-type').AndReturn(None)
588 presubmit.gcl.GetSVNFileProperty(another, 'svn:mime-type').AndReturn(None) 570 presubmit.gcl.GetSVNFileProperty(another, 'svn:mime-type').AndReturn(None)
589 presubmit.gcl.GetSVNFileProperty(third_party, 'svn:mime-type' 571 presubmit.gcl.GetSVNFileProperty(third_party, 'svn:mime-type'
590 ).AndReturn(None) 572 ).AndReturn(None)
591 presubmit.gcl.ReadFile(blat).AndReturn('whatever\ncookie') 573 presubmit.gcl.ReadFile(blat).AndReturn('whatever\ncookie')
592 presubmit.gcl.ReadFile(another).AndReturn('whatever\ncookie2') 574 presubmit.gcl.ReadFile(another).AndReturn('whatever\ncookie2')
593 ci = self.MakeChangeInfo('mychange', 0, 0, '\n'.join(description_lines)) 575 ci = self.MakeChangeInfo('mychange', 0, 0, '\n'.join(description_lines),
594 ci.GetLocalRoot().AndReturn(self.fake_root_dir) 576 files)
595 ci.GetFiles().AndReturn(files)
596 self.mox.ReplayAll() 577 self.mox.ReplayAll()
597 578
598 change = presubmit.GclChange(ci) 579 change = presubmit.GclChange(ci)
599 input_api = presubmit.InputApi(change, 580 input_api = presubmit.InputApi(change,
600 join(self.fake_root_dir, 'foo', 581 join(self.fake_root_dir, 'foo',
601 'PRESUBMIT.py'), 582 'PRESUBMIT.py'),
602 False) 583 False)
603 # Doesn't filter much 584 # Doesn't filter much
604 got_files = input_api.AffectedFiles() 585 got_files = input_api.AffectedFiles()
605 self.assertEquals(len(got_files), 7) 586 self.assertEquals(len(got_files), 7)
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
697 678
698 def testCustomFilter(self): 679 def testCustomFilter(self):
699 def FilterSourceFile(affected_file): 680 def FilterSourceFile(affected_file):
700 return 'a' in affected_file.LocalPath() 681 return 'a' in affected_file.LocalPath()
701 files = [('A', 'eeaee'), ('M', 'eeabee'), ('M', 'eebcee')] 682 files = [('A', 'eeaee'), ('M', 'eeabee'), ('M', 'eebcee')]
702 for (action, item) in files: 683 for (action, item) in files:
703 item = presubmit.os.path.join(self.fake_root_dir, item) 684 item = presubmit.os.path.join(self.fake_root_dir, item)
704 presubmit.os.path.exists(item).AndReturn(True) 685 presubmit.os.path.exists(item).AndReturn(True)
705 presubmit.os.path.isdir(item).AndReturn(False) 686 presubmit.os.path.isdir(item).AndReturn(False)
706 presubmit.gcl.GetSVNFileProperty(item, 'svn:mime-type').AndReturn(None) 687 presubmit.gcl.GetSVNFileProperty(item, 'svn:mime-type').AndReturn(None)
707 ci = self.MakeChangeInfo('mychange', 0, 0, '') 688 ci = self.MakeChangeInfo('mychange', 0, 0, '', files)
708 ci.GetLocalRoot().AndReturn(self.fake_root_dir)
709 ci.GetFiles().AndReturn(files)
710 self.mox.ReplayAll() 689 self.mox.ReplayAll()
711 690
712 change = presubmit.GclChange(ci) 691 change = presubmit.GclChange(ci)
713 input_api = presubmit.InputApi(change, 692 input_api = presubmit.InputApi(change,
714 presubmit.os.path.join(self.fake_root_dir, 693 presubmit.os.path.join(self.fake_root_dir,
715 'PRESUBMIT.py'), 694 'PRESUBMIT.py'),
716 False) 695 False)
717 got_files = input_api.AffectedSourceFiles(FilterSourceFile) 696 got_files = input_api.AffectedSourceFiles(FilterSourceFile)
718 self.assertEquals(len(got_files), 2) 697 self.assertEquals(len(got_files), 2)
719 self.assertEquals(got_files[0].LocalPath(), 'eeaee') 698 self.assertEquals(got_files[0].LocalPath(), 'eeaee')
720 self.assertEquals(got_files[1].LocalPath(), 'eeabee') 699 self.assertEquals(got_files[1].LocalPath(), 'eeabee')
721 700
722 def testLambdaFilter(self): 701 def testLambdaFilter(self):
723 white_list = presubmit.InputApi.DEFAULT_BLACK_LIST + (r".*?a.*?",) 702 white_list = presubmit.InputApi.DEFAULT_BLACK_LIST + (r".*?a.*?",)
724 black_list = [r".*?b.*?"] 703 black_list = [r".*?b.*?"]
725 files = [('A', 'eeaee'), ('M', 'eeabee'), ('M', 'eebcee'), ('M', 'eecaee')] 704 files = [('A', 'eeaee'), ('M', 'eeabee'), ('M', 'eebcee'), ('M', 'eecaee')]
726 for (action, item) in files: 705 for (action, item) in files:
727 item = presubmit.os.path.join(self.fake_root_dir, item) 706 item = presubmit.os.path.join(self.fake_root_dir, item)
728 presubmit.os.path.exists(item).AndReturn(True) 707 presubmit.os.path.exists(item).AndReturn(True)
729 presubmit.os.path.isdir(item).AndReturn(False) 708 presubmit.os.path.isdir(item).AndReturn(False)
730 presubmit.gcl.GetSVNFileProperty(item, 'svn:mime-type').AndReturn(None) 709 presubmit.gcl.GetSVNFileProperty(item, 'svn:mime-type').AndReturn(None)
731 ci = self.MakeChangeInfo('mychange', 0, 0, '') 710 ci = self.MakeChangeInfo('mychange', 0, 0, '', files)
732 ci.GetLocalRoot().AndReturn(self.fake_root_dir)
733 ci.GetFiles().AndReturn(files)
734 self.mox.ReplayAll() 711 self.mox.ReplayAll()
735 712
736 change = presubmit.GclChange(ci) 713 change = presubmit.GclChange(ci)
737 input_api = presubmit.InputApi(change, './PRESUBMIT.py', False) 714 input_api = presubmit.InputApi(change, './PRESUBMIT.py', False)
738 # Sample usage of overiding the default white and black lists. 715 # Sample usage of overiding the default white and black lists.
739 got_files = input_api.AffectedSourceFiles( 716 got_files = input_api.AffectedSourceFiles(
740 lambda x: input_api.FilterSourceFile(x, white_list, black_list)) 717 lambda x: input_api.FilterSourceFile(x, white_list, black_list))
741 self.assertEquals(len(got_files), 2) 718 self.assertEquals(len(got_files), 2)
742 self.assertEquals(got_files[0].LocalPath(), 'eeaee') 719 self.assertEquals(got_files[0].LocalPath(), 'eeaee')
743 self.assertEquals(got_files[1].LocalPath(), 'eecaee') 720 self.assertEquals(got_files[1].LocalPath(), 'eecaee')
744 721
745 def testGetAbsoluteLocalPath(self): 722 def testGetAbsoluteLocalPath(self):
746 join = presubmit.os.path.join 723 join = presubmit.os.path.join
747 normpath = presubmit.normpath 724 normpath = presubmit.normpath
748 # Regression test for bug of presubmit stuff that relies on invoking 725 # Regression test for bug of presubmit stuff that relies on invoking
749 # SVN (e.g. to get mime type of file) not working unless gcl invoked 726 # SVN (e.g. to get mime type of file) not working unless gcl invoked
750 # from the client root (e.g. if you were at 'src' and did 'cd base' before 727 # from the client root (e.g. if you were at 'src' and did 'cd base' before
751 # invoking 'gcl upload' it would fail because svn wouldn't find the files 728 # invoking 'gcl upload' it would fail because svn wouldn't find the files
752 # the presubmit script was asking about). 729 # the presubmit script was asking about).
753 files = [ 730 files = [
754 ['A', 'isdir'], 731 ['A', 'isdir'],
755 ['A', join('isdir', 'blat.cc')], 732 ['A', join('isdir', 'blat.cc')],
756 ['M', join('elsewhere', 'ouf.cc')], 733 ['M', join('elsewhere', 'ouf.cc')],
757 ] 734 ]
758 ci = self.MakeChangeInfo('mychange', 0, 0, '') 735 ci = self.MakeChangeInfo('mychange', 0, 0, '', files)
759 ci.GetLocalRoot().AndReturn(self.fake_root_dir)
760 ci.GetFiles().AndReturn(files)
761 self.mox.ReplayAll() 736 self.mox.ReplayAll()
762 737
763 # It doesn't make sense on non-Windows platform. This is somewhat hacky, 738 # It doesn't make sense on non-Windows platform. This is somewhat hacky,
764 # but it is needed since we can't just use os.path.join('c:', 'temp'). 739 # but it is needed since we can't just use os.path.join('c:', 'temp').
765 change = presubmit.GclChange(ci) 740 change = presubmit.GclChange(ci)
766 affected_files = change.AffectedFiles(include_dirs=True) 741 affected_files = change.AffectedFiles(include_dirs=True)
767 # Local paths should remain the same 742 # Local paths should remain the same
768 self.assertEquals(affected_files[0].LocalPath(), normpath('isdir')) 743 self.assertEquals(affected_files[0].LocalPath(), normpath('isdir'))
769 self.assertEquals(affected_files[1].LocalPath(), normpath('isdir/blat.cc')) 744 self.assertEquals(affected_files[1].LocalPath(), normpath('isdir/blat.cc'))
770 # Absolute paths should be prefixed 745 # Absolute paths should be prefixed
(...skipping 13 matching lines...) Expand all
784 self.assertEqual(len(paths_from_api), 2) 759 self.assertEqual(len(paths_from_api), 2)
785 for absolute_paths in [paths_from_change, paths_from_api]: 760 for absolute_paths in [paths_from_change, paths_from_api]:
786 self.assertEqual(absolute_paths[0], 761 self.assertEqual(absolute_paths[0],
787 normpath(join(self.fake_root_dir, 'isdir'))) 762 normpath(join(self.fake_root_dir, 'isdir')))
788 self.assertEqual(absolute_paths[1], 763 self.assertEqual(absolute_paths[1],
789 normpath(join(self.fake_root_dir, 'isdir', 'blat.cc'))) 764 normpath(join(self.fake_root_dir, 'isdir', 'blat.cc')))
790 765
791 def testDeprecated(self): 766 def testDeprecated(self):
792 presubmit.warnings.warn(mox.IgnoreArg(), category=mox.IgnoreArg(), 767 presubmit.warnings.warn(mox.IgnoreArg(), category=mox.IgnoreArg(),
793 stacklevel=2) 768 stacklevel=2)
794 ci = self.MakeChangeInfo('mychange', 0, 0, 'Bleh\n') 769 ci = self.MakeChangeInfo('mychange', 0, 0, 'Bleh\n', [])
795 ci.GetLocalRoot().AndReturn(self.fake_root_dir)
796 ci.GetFiles().AndReturn([])
797 self.mox.ReplayAll() 770 self.mox.ReplayAll()
798 771
799 change = presubmit.GclChange(ci) 772 change = presubmit.GclChange(ci)
800 api = presubmit.InputApi( 773 api = presubmit.InputApi(
801 change, 774 change,
802 presubmit.os.path.join(self.fake_root_dir, 'foo', 'PRESUBMIT.py'), True) 775 presubmit.os.path.join(self.fake_root_dir, 'foo', 'PRESUBMIT.py'), True)
803 api.AffectedTextFiles(include_deletes=False) 776 api.AffectedTextFiles(include_deletes=False)
804 777
805 def testReadFileStringDenied(self): 778 def testReadFileStringDenied(self):
806 ci = self.MakeChangeInfo('foo', 0, 0, 'Foo\n') 779 ci = self.MakeChangeInfo('foo', 0, 0, 'Foo\n', [('M', 'AA')])
807 ci.GetLocalRoot().AndReturn(self.fake_root_dir)
808 ci.GetFiles().AndReturn([('M', 'AA')])
809 self.mox.ReplayAll() 780 self.mox.ReplayAll()
810 781
811 input_api = presubmit.InputApi( 782 input_api = presubmit.InputApi(
812 None, presubmit.os.path.join(self.fake_root_dir, '/p'), False) 783 None, presubmit.os.path.join(self.fake_root_dir, '/p'), False)
813 input_api.change = presubmit.GclChange(ci) 784 input_api.change = presubmit.GclChange(ci)
814 self.assertRaises(IOError, input_api.ReadFile, 'boo', 'x') 785 self.assertRaises(IOError, input_api.ReadFile, 'boo', 'x')
815 786
816 def testReadFileStringAccepted(self): 787 def testReadFileStringAccepted(self):
817 ci = self.MakeChangeInfo('foo', 0, 0, 'Foo\n') 788 ci = self.MakeChangeInfo('foo', 0, 0, 'Foo\n', [('M', 'AA')])
818 ci.GetLocalRoot().AndReturn(self.fake_root_dir)
819 path = presubmit.os.path.join(self.fake_root_dir, 'AA/boo') 789 path = presubmit.os.path.join(self.fake_root_dir, 'AA/boo')
820 ci.GetFiles().AndReturn([('M', 'AA')])
821 presubmit.gcl.ReadFile(path, 'x').AndReturn(None) 790 presubmit.gcl.ReadFile(path, 'x').AndReturn(None)
822 self.mox.ReplayAll() 791 self.mox.ReplayAll()
823 792
824 input_api = presubmit.InputApi( 793 input_api = presubmit.InputApi(
825 None, presubmit.os.path.join(self.fake_root_dir, '/p'), False) 794 None, presubmit.os.path.join(self.fake_root_dir, '/p'), False)
826 input_api.change = presubmit.GclChange(ci) 795 input_api.change = presubmit.GclChange(ci)
827 input_api.ReadFile(path, 'x') 796 input_api.ReadFile(path, 'x')
828 797
829 def testReadFileAffectedFileDenied(self): 798 def testReadFileAffectedFileDenied(self):
830 ci = self.MakeChangeInfo('foo', 0, 0, 'Foo\n') 799 ci = self.MakeChangeInfo('foo', 0, 0, 'Foo\n', [('M', 'AA')])
831 ci.GetLocalRoot().AndReturn(self.fake_root_dir)
832 ci.GetFiles().AndReturn([('M', 'AA')])
833 file = presubmit.AffectedFile('boo', 'M', 'Unrelated') 800 file = presubmit.AffectedFile('boo', 'M', 'Unrelated')
834 self.mox.ReplayAll() 801 self.mox.ReplayAll()
835 802
836 input_api = presubmit.InputApi( 803 input_api = presubmit.InputApi(
837 None, presubmit.os.path.join(self.fake_root_dir, '/p'), False) 804 None, presubmit.os.path.join(self.fake_root_dir, '/p'), False)
838 input_api.change = presubmit.GclChange(ci) 805 input_api.change = presubmit.GclChange(ci)
839 self.assertRaises(IOError, input_api.ReadFile, file, 'x') 806 self.assertRaises(IOError, input_api.ReadFile, file, 'x')
840 807
841 def testReadFileAffectedFileAccepted(self): 808 def testReadFileAffectedFileAccepted(self):
842 ci = self.MakeChangeInfo('foo', 0, 0, 'Foo\n') 809 ci = self.MakeChangeInfo('foo', 0, 0, 'Foo\n', [('M', 'AA')])
843 ci.GetLocalRoot().AndReturn(self.fake_root_dir)
844 ci.GetFiles().AndReturn([('M', 'AA')])
845 file = presubmit.AffectedFile('AA/boo', 'M', self.fake_root_dir) 810 file = presubmit.AffectedFile('AA/boo', 'M', self.fake_root_dir)
846 presubmit.gcl.ReadFile(file.AbsoluteLocalPath(), 'x').AndReturn(None) 811 presubmit.gcl.ReadFile(file.AbsoluteLocalPath(), 'x').AndReturn(None)
847 self.mox.ReplayAll() 812 self.mox.ReplayAll()
848 813
849 input_api = presubmit.InputApi( 814 input_api = presubmit.InputApi(
850 None, presubmit.os.path.join(self.fake_root_dir, '/p'), False) 815 None, presubmit.os.path.join(self.fake_root_dir, '/p'), False)
851 input_api.change = presubmit.GclChange(ci) 816 input_api.change = presubmit.GclChange(ci)
852 input_api.ReadFile(file, 'x') 817 input_api.ReadFile(file, 'x')
853 818
854 819
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
988 953
989 class GclChangeUnittest(PresubmitTestsBase): 954 class GclChangeUnittest(PresubmitTestsBase):
990 def testMembersChanged(self): 955 def testMembersChanged(self):
991 members = [ 956 members = [
992 'AbsoluteLocalPaths', 'AffectedFiles', 'AffectedTextFiles', 957 'AbsoluteLocalPaths', 'AffectedFiles', 'AffectedTextFiles',
993 'DescriptionText', 'FullDescriptionText', 'LocalPaths', 'Name', 958 'DescriptionText', 'FullDescriptionText', 'LocalPaths', 'Name',
994 'RepositoryRoot', 'RightHandSideLines', 'ServerPaths', 959 'RepositoryRoot', 'RightHandSideLines', 'ServerPaths',
995 'issue', 'patchset', 'tags', 960 'issue', 'patchset', 'tags',
996 ] 961 ]
997 # If this test fails, you should add the relevant test. 962 # If this test fails, you should add the relevant test.
998 ci = self.MakeChangeInfo('', 0, 0, '') 963 ci = self.MakeChangeInfo('', 0, 0, '', [])
999 ci.GetLocalRoot().AndReturn(self.fake_root_dir)
1000 ci.GetFiles().AndReturn([])
1001 self.mox.ReplayAll() 964 self.mox.ReplayAll()
1002 965
1003 self.compareMembers(presubmit.GclChange(ci), members) 966 self.compareMembers(presubmit.GclChange(ci), members)
1004 967
1005 968
1006 class CannedChecksUnittest(PresubmitTestsBase): 969 class CannedChecksUnittest(PresubmitTestsBase):
1007 """Tests presubmit_canned_checks.py.""" 970 """Tests presubmit_canned_checks.py."""
1008 971
1009 def setUp(self): 972 def setUp(self):
1010 PresubmitTestsBase.setUp(self) 973 PresubmitTestsBase.setUp(self)
(...skipping 22 matching lines...) Expand all
1033 'CheckDoNotSubmitInDescription', 'CheckDoNotSubmitInFiles', 996 'CheckDoNotSubmitInDescription', 'CheckDoNotSubmitInFiles',
1034 'CheckLongLines', 'CheckTreeIsOpen', 'RunPythonUnitTests', 997 'CheckLongLines', 'CheckTreeIsOpen', 'RunPythonUnitTests',
1035 ] 998 ]
1036 # If this test fails, you should add the relevant test. 999 # If this test fails, you should add the relevant test.
1037 self.compareMembers(presubmit_canned_checks, members) 1000 self.compareMembers(presubmit_canned_checks, members)
1038 1001
1039 def DescriptionTest(self, check, description1, description2, error_type, 1002 def DescriptionTest(self, check, description1, description2, error_type,
1040 committing): 1003 committing):
1041 input_api1 = self.MockInputApi() 1004 input_api1 = self.MockInputApi()
1042 input_api1.is_committing = committing 1005 input_api1.is_committing = committing
1043 ci1 = self.MakeChangeInfo('foo', 0, 0, description1) 1006 ci1 = self.MakeChangeInfo('foo', 0, 0, description1, [])
1044 ci1.GetLocalRoot().AndReturn(self.fake_root_dir)
1045 ci1.GetFiles().AndReturn([])
1046 input_api2 = self.MockInputApi() 1007 input_api2 = self.MockInputApi()
1047 input_api2.is_committing = committing 1008 input_api2.is_committing = committing
1048 ci2 = self.MakeChangeInfo('foo', 0, 0, description2) 1009 ci2 = self.MakeChangeInfo('foo', 0, 0, description2, [])
1049 ci2.GetLocalRoot().AndReturn(self.fake_root_dir)
1050 ci2.GetFiles().AndReturn([])
1051 self.mox.ReplayAll() 1010 self.mox.ReplayAll()
1052 1011
1053 input_api1.change = presubmit.GclChange(ci1) 1012 input_api1.change = presubmit.GclChange(ci1)
1054 input_api2.change = presubmit.GclChange(ci2) 1013 input_api2.change = presubmit.GclChange(ci2)
1055 results1 = check(input_api1, presubmit.OutputApi) 1014 results1 = check(input_api1, presubmit.OutputApi)
1056 self.assertEquals(results1, []) 1015 self.assertEquals(results1, [])
1057 results2 = check(input_api2, presubmit.OutputApi) 1016 results2 = check(input_api2, presubmit.OutputApi)
1058 self.assertEquals(len(results2), 1) 1017 self.assertEquals(len(results2), 1)
1059 self.assertEquals(results2[0].__class__, error_type) 1018 self.assertEquals(results2[0].__class__, error_type)
1060 1019
1061 def ContentTest(self, check, content1, content2, error_type): 1020 def ContentTest(self, check, content1, content2, error_type):
1062 input_api1 = self.MockInputApi() 1021 input_api1 = self.MockInputApi()
1063 ci1 = self.MakeChangeInfo('foo', 0, 0, 'foo1\n') 1022 ci1 = self.MakeChangeInfo('foo', 0, 0, 'foo1\n', [])
1064 ci1.GetLocalRoot().AndReturn(self.fake_root_dir)
1065 ci1.GetFiles().AndReturn([])
1066 affected_file = self.mox.CreateMock(presubmit.SvnAffectedFile) 1023 affected_file = self.mox.CreateMock(presubmit.SvnAffectedFile)
1067 affected_file.LocalPath().AndReturn('foo.cc') 1024 affected_file.LocalPath().AndReturn('foo.cc')
1068 output1 = [ 1025 output1 = [
1069 (affected_file, 42, 'yo, ' + content1), 1026 (affected_file, 42, 'yo, ' + content1),
1070 (affected_file, 43, 'yer'), 1027 (affected_file, 43, 'yer'),
1071 (affected_file, 23, 'ya'), 1028 (affected_file, 23, 'ya'),
1072 ] 1029 ]
1073 input_api1.RightHandSideLines(mox.IgnoreArg()).AndReturn(output1) 1030 input_api1.RightHandSideLines(mox.IgnoreArg()).AndReturn(output1)
1074 input_api2 = self.MockInputApi() 1031 input_api2 = self.MockInputApi()
1075 ci2 = self.MakeChangeInfo('foo2', 0, 0, 'foo2\n') 1032 ci2 = self.MakeChangeInfo('foo2', 0, 0, 'foo2\n', None)
1076 ci2.GetLocalRoot().AndReturn(self.fake_root_dir)
1077 ci2.GetFiles().AndReturn([])
1078 output2 = [ 1033 output2 = [
1079 (affected_file, 42, 'yo, ' + content2), 1034 (affected_file, 42, 'yo, ' + content2),
1080 (affected_file, 43, 'yer'), 1035 (affected_file, 43, 'yer'),
1081 (affected_file, 23, 'ya'), 1036 (affected_file, 23, 'ya'),
1082 ] 1037 ]
1083 input_api2.RightHandSideLines(mox.IgnoreArg()).AndReturn(output2) 1038 input_api2.RightHandSideLines(mox.IgnoreArg()).AndReturn(output2)
1084 self.mox.ReplayAll() 1039 self.mox.ReplayAll()
1085 1040
1086 input_api1.change = presubmit.GclChange(ci1) 1041 input_api1.change = presubmit.GclChange(ci1)
1087 input_api2.change = presubmit.GclChange(ci2) 1042 input_api2.change = presubmit.GclChange(ci2)
1088 results1 = check(input_api1, presubmit.OutputApi, None) 1043 results1 = check(input_api1, presubmit.OutputApi, None)
1089 self.assertEquals(results1, []) 1044 self.assertEquals(results1, [])
1090 results2 = check(input_api2, presubmit.OutputApi, None) 1045 results2 = check(input_api2, presubmit.OutputApi, None)
1091 self.assertEquals(len(results2), 1) 1046 self.assertEquals(len(results2), 1)
1092 self.assertEquals(results2[0].__class__, error_type) 1047 self.assertEquals(results2[0].__class__, error_type)
1093 1048
1094 def ReadFileTest(self, check, content1, content2, error_type): 1049 def ReadFileTest(self, check, content1, content2, error_type):
1095 input_api1 = self.MockInputApi() 1050 input_api1 = self.MockInputApi()
1096 self.mox.StubOutWithMock(input_api1, 'ReadFile') 1051 self.mox.StubOutWithMock(input_api1, 'ReadFile')
1097 ci1 = self.MakeChangeInfo('foo', 0, 0, 'foo1\n') 1052 ci1 = self.MakeChangeInfo('foo', 0, 0, 'foo1\n', None)
1098 ci1.GetLocalRoot().AndReturn(self.fake_root_dir)
1099 ci1.GetFiles().AndReturn([])
1100 affected_file1 = self.mox.CreateMock(presubmit.SvnAffectedFile) 1053 affected_file1 = self.mox.CreateMock(presubmit.SvnAffectedFile)
1101 input_api1.AffectedSourceFiles(None).AndReturn([affected_file1]) 1054 input_api1.AffectedSourceFiles(None).AndReturn([affected_file1])
1102 input_api1.ReadFile(affected_file1, 'rb').AndReturn(content1) 1055 input_api1.ReadFile(affected_file1, 'rb').AndReturn(content1)
1103 input_api2 = self.MockInputApi() 1056 input_api2 = self.MockInputApi()
1104 self.mox.StubOutWithMock(input_api2, 'ReadFile') 1057 self.mox.StubOutWithMock(input_api2, 'ReadFile')
1105 ci2 = self.MakeChangeInfo('foo2', 0, 0, 'foo2\n') 1058 ci2 = self.MakeChangeInfo('foo2', 0, 0, 'foo2\n', [])
1106 ci2.GetLocalRoot().AndReturn(self.fake_root_dir)
1107 ci2.GetFiles().AndReturn([])
1108 affected_file2 = self.mox.CreateMock(presubmit.SvnAffectedFile) 1059 affected_file2 = self.mox.CreateMock(presubmit.SvnAffectedFile)
1109 input_api2.AffectedSourceFiles(None).AndReturn([affected_file2]) 1060 input_api2.AffectedSourceFiles(None).AndReturn([affected_file2])
1110 input_api2.ReadFile(affected_file2, 'rb').AndReturn(content2) 1061 input_api2.ReadFile(affected_file2, 'rb').AndReturn(content2)
1111 affected_file2.LocalPath().AndReturn('bar.cc') 1062 affected_file2.LocalPath().AndReturn('bar.cc')
1112 self.mox.ReplayAll() 1063 self.mox.ReplayAll()
1113 1064
1114 input_api1.change = presubmit.GclChange(ci1) 1065 input_api1.change = presubmit.GclChange(ci1)
1115 input_api2.change = presubmit.GclChange(ci2) 1066 input_api2.change = presubmit.GclChange(ci2)
1116 results = check(input_api1, presubmit.OutputApi) 1067 results = check(input_api1, presubmit.OutputApi)
1117 self.assertEquals(results, []) 1068 self.assertEquals(results, [])
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
1411 test_result.errors = 0 1362 test_result.errors = 0
1412 self.mox.ReplayAll() 1363 self.mox.ReplayAll()
1413 1364
1414 results = presubmit_canned_checks.RunPythonUnitTests( 1365 results = presubmit_canned_checks.RunPythonUnitTests(
1415 input_api, presubmit.OutputApi, ['test_module']) 1366 input_api, presubmit.OutputApi, ['test_module'])
1416 self.assertEquals(len(results), 0) 1367 self.assertEquals(len(results), 0)
1417 1368
1418 1369
1419 if __name__ == '__main__': 1370 if __name__ == '__main__':
1420 unittest.main() 1371 unittest.main()
OLDNEW
« no previous file with comments | « tests/gcl_unittest.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698