| Index: tests/presubmit_unittest.py | 
| diff --git a/tests/presubmit_unittest.py b/tests/presubmit_unittest.py | 
| index bf9237cac2cf4d6c0c01816c6782837d4e075948..f6399c7e0394bd8979eadbcc02ec04bb470282fc 100755 | 
| --- a/tests/presubmit_unittest.py | 
| +++ b/tests/presubmit_unittest.py | 
| @@ -48,7 +48,9 @@ def CheckChangeOnUpload(input_api, output_api): | 
| presubmit.os.path.dirname = os_path_dirname | 
| presubmit.os.path.normpath = os_path_normpath | 
| presubmit.os.path.splitext = os_path_splitext | 
| +    self.mox.StubOutWithMock(presubmit, 'random') | 
| self.mox.StubOutWithMock(presubmit, 'sys') | 
| +    presubmit._ASKED_FOR_FEEDBACK = False | 
| # Special mocks. | 
| def MockAbsPath(f): | 
| return f | 
| @@ -71,8 +73,8 @@ class PresubmitUnittest(PresubmitTestsBase): | 
| 'SvnAffectedFile', 'SvnChange', | 
| 'cPickle', 'cStringIO', 'exceptions', | 
| 'fnmatch', 'gcl', 'gclient', 'glob', 'logging', 'marshal', 'normpath', | 
| -      'optparse', | 
| -      'os', 'pickle', 'presubmit_canned_checks', 're', 'subprocess', 'sys', | 
| +      'optparse', 'os', 'pickle', | 
| +      'presubmit_canned_checks', 'random', 're', 'subprocess', 'sys', | 
| 'tempfile', 'traceback', 'types', 'unittest', 'urllib2', 'warnings', | 
| ] | 
| # If this test fails, you should add the relevant test. | 
| @@ -295,6 +297,7 @@ class PresubmitUnittest(PresubmitTestsBase): | 
| 'rU').AndReturn(self.presubmit_text) | 
| presubmit.gcl.ReadFile(haspresubmit_path, | 
| 'rU').AndReturn(self.presubmit_text) | 
| +    presubmit.random.randint(0, 4).AndReturn(1) | 
| self.mox.ReplayAll() | 
|  | 
| output = StringIO.StringIO() | 
| @@ -322,6 +325,8 @@ class PresubmitUnittest(PresubmitTestsBase): | 
| ).AndReturn(self.presubmit_text) | 
| presubmit.gcl.ReadFile(haspresubmit_path, 'rU' | 
| ).AndReturn(self.presubmit_text) | 
| +    presubmit.random.randint(0, 4).AndReturn(1) | 
| +    presubmit.random.randint(0, 4).AndReturn(1) | 
| self.mox.ReplayAll() | 
|  | 
| output = StringIO.StringIO() | 
| @@ -355,6 +360,7 @@ class PresubmitUnittest(PresubmitTestsBase): | 
| presubmit.gcl.ReadFile(presubmit_path, 'rU').AndReturn(self.presubmit_text) | 
| presubmit.gcl.ReadFile(haspresubmit_path, 'rU').AndReturn( | 
| self.presubmit_text) | 
| +    presubmit.random.randint(0, 4).AndReturn(1) | 
| self.mox.ReplayAll() | 
|  | 
| output = StringIO.StringIO() | 
| @@ -367,7 +373,7 @@ class PresubmitUnittest(PresubmitTestsBase): | 
| self.assertEqual(output.getvalue().count('XX!!XX'), 2) | 
| self.assertEqual(output.getvalue().count('(y/N)'), 0) | 
|  | 
| -  def testDoDefaultPresubmitChecks(self): | 
| +  def testDoDefaultPresubmitChecksAndFeedback(self): | 
| join = presubmit.os.path.join | 
| description_lines = ('Hello there', | 
| 'this is a change', | 
| @@ -386,6 +392,7 @@ def CheckChangeOnCommit(input_api, output_api): | 
| presubmit.os.path.isfile(join(self.fake_root_dir, | 
| 'haspresubmit', | 
| 'PRESUBMIT.py')).AndReturn(False) | 
| +    presubmit.random.randint(0, 4).AndReturn(0) | 
| self.mox.ReplayAll() | 
|  | 
| output = StringIO.StringIO() | 
| @@ -395,7 +402,12 @@ def CheckChangeOnCommit(input_api, output_api): | 
| self.fake_root_dir, files, 0, 0) | 
| self.failIf(presubmit.DoPresubmitChecks(change, False, True, output, input, | 
| DEFAULT_SCRIPT, False)) | 
| -    self.assertEquals(output.getvalue().count('!!'), 1) | 
| +    text = ('Warning, no presubmit.py found.\n' | 
| +            'Running default presubmit script.\n' | 
| +            '** Presubmit ERRORS **\n!!\n\n' | 
| +            'Was the presubmit check useful? Please send feedback & hate mail ' | 
| +            'to maruel@chromium.org!\n') | 
| +    self.assertEquals(output.getvalue(), text) | 
|  | 
| def testDirectoryHandling(self): | 
| files = [ | 
| @@ -449,6 +461,7 @@ def CheckChangeOnUpload(input_api, output_api): | 
| def CheckChangeOnCommit(input_api, output_api): | 
| raise Exception("Test error") | 
| """ | 
| +    presubmit.random.randint(0, 4).AndReturn(1) | 
| self.mox.ReplayAll() | 
|  | 
| output = StringIO.StringIO() | 
|  |