Index: tests/presubmit_unittest.py |
diff --git a/tests/presubmit_unittest.py b/tests/presubmit_unittest.py |
index c449c710f14b6910dc2e6c92ad4aa5ac41810c96..75480d6faadbc411e563bca84099c8a41f6974c7 100755 |
--- a/tests/presubmit_unittest.py |
+++ b/tests/presubmit_unittest.py |
@@ -62,16 +62,18 @@ class PresubmitTestsBase(unittest.TestCase): |
self.fail('Should not attempt to read file that is directory.') |
elif path.endswith('PRESUBMIT.py'): |
# used in testDoPresubmitChecks |
- return ('def CheckChangeOnUpload(input_api, output_api):\n' |
- ' if not input_api.change.NOSUCHKEY:\n' |
- ' return [output_api.PresubmitError("!!")]\n' |
- ' elif not input_api.change.REALLYNOSUCHKEY:\n' |
- ' return [output_api.PresubmitPromptWarning("??")]\n' |
- ' elif not input_api.change.REALLYABSOLUTELYNOSUCHKEY:\n' |
- ' return [output_api.PresubmitPromptWarning("??"),\n' |
- ' output_api.PresubmitError("XX!!XX")]\n' |
- ' else:\n' |
- ' return ()') |
+ return """ |
+def CheckChangeOnUpload(input_api, output_api): |
+ if not input_api.change.NOSUCHKEY: |
+ return [output_api.PresubmitError("!!")] |
+ elif not input_api.change.REALLYNOSUCHKEY: |
+ return [output_api.PresubmitPromptWarning("??")] |
+ elif not input_api.change.REALLYABSOLUTELYNOSUCHKEY: |
+ return [output_api.PresubmitPromptWarning("??"), |
+ output_api.PresubmitError("XX!!XX")] |
+ else: |
+ return () |
+""" |
else: |
return 'one:%s\r\ntwo:%s' % (path, path) |
gcl.ReadFile = MockReadFile |
@@ -303,8 +305,9 @@ class PresubmitUnittest(PresubmitTestsBase): |
output = StringIO.StringIO() |
input = StringIO.StringIO('y\n') |
- self.failIf(presubmit.DoPresubmitChecks(ci, False, True, output, input)) |
- self.failUnless(output.getvalue().count('!!')) |
+ self.failIf(presubmit.DoPresubmitChecks(ci, False, True, output, input, |
+ None)) |
+ self.assertEqual(output.getvalue().count('!!'), 2) |
def testDoPresubmitChecksPromptsAfterWarnings(self): |
description_lines = ('Hello there', |
@@ -320,8 +323,9 @@ class PresubmitUnittest(PresubmitTestsBase): |
output = StringIO.StringIO() |
input = StringIO.StringIO('n\n') # say no to the warning |
- self.failIf(presubmit.DoPresubmitChecks(ci, False, True, output, input)) |
- self.failUnless(output.getvalue().count('??')) |
+ self.failIf(presubmit.DoPresubmitChecks(ci, False, True, output, input, |
+ None)) |
+ self.assertEqual(output.getvalue().count('??'), 2) |
output = StringIO.StringIO() |
input = StringIO.StringIO('y\n') # say yes to the warning |
@@ -330,7 +334,8 @@ class PresubmitUnittest(PresubmitTestsBase): |
False, |
True, |
output, |
- input)) |
+ input, |
+ None)) |
self.failUnless(output.getvalue().count('??')) |
def testDoPresubmitChecksNoWarningPromptIfErrors(self): |
@@ -348,10 +353,40 @@ class PresubmitUnittest(PresubmitTestsBase): |
output = StringIO.StringIO() |
input = StringIO.StringIO() # should be unused |
- self.failIf(presubmit.DoPresubmitChecks(ci, False, True, output, input)) |
- self.failUnless(output.getvalue().count('??')) |
- self.failUnless(output.getvalue().count('XX!!XX')) |
- self.failIf(output.getvalue().count('(y/N)')) |
+ self.failIf(presubmit.DoPresubmitChecks(ci, False, True, output, input, |
+ None)) |
+ self.assertEqual(output.getvalue().count('??'), 2) |
+ self.assertEqual(output.getvalue().count('XX!!XX'), 2) |
+ self.assertEqual(output.getvalue().count('(y/N)'), 0) |
+ |
+ def testDoDefaultPresubmitChecks(self): |
+ description_lines = ('Hello there', |
+ 'this is a change', |
+ 'STORY=http://tracker/123') |
+ files = [ |
+ ['A', 'haspresubmit\\blat.cc'], |
+ ] |
+ ci = gcl.ChangeInfo(name='mychange', |
+ description='\n'.join(description_lines), |
+ files=files) |
+ |
+ output = StringIO.StringIO() |
+ input = StringIO.StringIO('y\n') |
+ # Always fail. |
+ DEFAULT_SCRIPT = """ |
+def CheckChangeOnUpload(input_api, output_api): |
+ print 'This is a test' |
+ return [output_api.PresubmitError("!!")] |
+""" |
+ def MockReadFile(dummy): |
+ return '' |
+ gcl.ReadFile = MockReadFile |
+ def MockIsFile(dummy): |
+ return False |
+ os.path.isfile = MockIsFile |
+ self.failIf(presubmit.DoPresubmitChecks(ci, False, True, output, input, |
+ DEFAULT_SCRIPT)) |
+ self.assertEquals(output.getvalue().count('!!'), 1) |
def testDirectoryHandling(self): |
files = [ |