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

Unified Diff: tests/presubmit_unittest.py

Issue 119252: Add InputApi.is_committing to be able to return a failure or notification, depending on the check. (Closed)
Patch Set: merged to trunk 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « presubmit_support.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/presubmit_unittest.py
diff --git a/tests/presubmit_unittest.py b/tests/presubmit_unittest.py
index be3cd74c19e46a5c698b74bbe827828b2c3cf20f..1b020260b9a78b31ab9ca15c69d3d83350019e09 100755
--- a/tests/presubmit_unittest.py
+++ b/tests/presubmit_unittest.py
@@ -104,10 +104,10 @@ class PresubmitUnittest(PresubmitTestsBase):
'ListRelevantPresubmitFiles', 'Main', 'NotImplementedException',
'OutputApi', 'ParseFiles', 'PresubmitExecuter',
'ScanSubDirs', 'SvnAffectedFile',
- 'cPickle', 'cStringIO', 'deprecated', 'exceptions',
+ 'cPickle', 'cStringIO', 'exceptions',
'fnmatch', 'gcl', 'gclient', 'glob', 'marshal', 'normpath', 'optparse',
'os', 'pickle', 'presubmit_canned_checks', 're', 'subprocess', 'sys',
- 'tempfile', 'types', 'unittest', 'urllib2', 'warnings',
+ 'tempfile', 'traceback', 'types', 'unittest', 'urllib2', 'warnings',
]
# If this test fails, you should add the relevant test.
self.compareMembers(presubmit, members)
@@ -476,6 +476,10 @@ def CheckChangeOnUpload(input_api, output_api):
return [output_api.PresubmitError('Tag parsing failed. 1')]
if input_api.change.tags['STORY'] != 'http://tracker.com/42':
return [output_api.PresubmitError('Tag parsing failed. 2')]
+ if input_api.change.BUG != 'boo':
+ return [output_api.PresubmitError('Tag parsing failed. 6')]
+ if input_api.change.STORY != 'http://tracker.com/42':
+ return [output_api.PresubmitError('Tag parsing failed. 7')]
if 'TEST' in input_api.change.tags:
return [output_api.PresubmitError('Tag parsing failed. 3')]
if input_api.change.DescriptionText() != 'Blah Blah':
@@ -517,11 +521,12 @@ class InputApiUnittest(PresubmitTestsBase):
'DepotToLocalPath', 'LocalPaths', 'LocalToDepotPath',
'PresubmitLocalPath', 'RightHandSideLines', 'ServerPaths',
'basename', 'cPickle', 'cStringIO', 'canned_checks', 'change',
- 'marshal', 'os_path', 'pickle', 'platform',
- 're', 'subprocess', 'tempfile', 'unittest', 'urllib2', 'version',
+ 'is_committing', 'marshal', 'os_path', 'pickle', 'platform',
+ 're', 'subprocess', 'tempfile', 'traceback', 'unittest', 'urllib2',
+ 'version',
]
# If this test fails, you should add the relevant test.
- self.compareMembers(presubmit.InputApi(None, './.'), members)
+ self.compareMembers(presubmit.InputApi(None, './.', False), members)
def testDepotToLocalPath(self):
presubmit.gclient.CaptureSVNInfo('svn://foo/smurf').AndReturn(
@@ -529,9 +534,10 @@ class InputApiUnittest(PresubmitTestsBase):
presubmit.gclient.CaptureSVNInfo('svn:/foo/notfound/burp').AndReturn({})
self.mox.ReplayAll()
- path = presubmit.InputApi(None, './p').DepotToLocalPath('svn://foo/smurf')
+ path = presubmit.InputApi(None, './p', False).DepotToLocalPath(
+ 'svn://foo/smurf')
self.failUnless(path == 'prout')
- path = presubmit.InputApi(None, './p').DepotToLocalPath(
+ path = presubmit.InputApi(None, './p', False).DepotToLocalPath(
'svn:/foo/notfound/burp')
self.failUnless(path == None)
@@ -540,15 +546,17 @@ class InputApiUnittest(PresubmitTestsBase):
presubmit.gclient.CaptureSVNInfo('notfound-food').AndReturn({})
self.mox.ReplayAll()
- path = presubmit.InputApi(None, './p').LocalToDepotPath('smurf')
+ path = presubmit.InputApi(None, './p', False).LocalToDepotPath('smurf')
self.assertEqual(path, 'svn://foo')
- path = presubmit.InputApi(None, './p').LocalToDepotPath('notfound-food')
+ path = presubmit.InputApi(None, './p', False).LocalToDepotPath(
+ 'notfound-food')
self.failUnless(path == None)
def testInputApiConstruction(self):
self.mox.ReplayAll()
# Fudge the change object, it's not used during construction anyway
- api = presubmit.InputApi(change=42, presubmit_path='foo/path/PRESUBMIT.py')
+ api = presubmit.InputApi(change=42, presubmit_path='foo/path/PRESUBMIT.py',
+ is_committing=False)
self.assertEquals(api.PresubmitLocalPath(), 'foo/path')
self.assertEquals(api.change, 42)
@@ -593,7 +601,7 @@ class InputApiUnittest(PresubmitTestsBase):
description='\n'.join(description_lines),
files=files)
change = presubmit.GclChange(ci)
- api = presubmit.InputApi(change, 'foo/PRESUBMIT.py')
+ api = presubmit.InputApi(change, 'foo/PRESUBMIT.py', False)
affected_files = api.AffectedFiles()
self.assertEquals(len(affected_files), 3)
self.assertEquals(affected_files[0].LocalPath(),
@@ -643,7 +651,9 @@ class InputApiUnittest(PresubmitTestsBase):
paths_from_change = change.AbsoluteLocalPaths(include_dirs=True)
self.assertEqual(len(paths_from_change), 3)
presubmit_path = join(self.fake_root_dir, 'isdir', 'PRESUBMIT.py')
- api = presubmit.InputApi(change=change, presubmit_path=presubmit_path)
+ api = presubmit.InputApi(change=change,
+ presubmit_path=presubmit_path,
+ is_committing=True)
paths_from_api = api.AbsoluteLocalPaths(include_dirs=True)
self.assertEqual(len(paths_from_api), 2)
for absolute_paths in [paths_from_change, paths_from_api]:
@@ -659,7 +669,7 @@ class InputApiUnittest(PresubmitTestsBase):
change = presubmit.GclChange(
presubmit.gcl.ChangeInfo(name='mychange', issue=0, patchset=0,
description='Bleh\n', files=None))
- api = presubmit.InputApi(change, 'foo/PRESUBMIT.py')
+ api = presubmit.InputApi(change, 'foo/PRESUBMIT.py', True)
api.AffectedTextFiles(include_deletes=False)
@@ -821,6 +831,7 @@ class CannedChecksUnittest(PresubmitTestsBase):
def MockInputApi(self):
input_api = self.mox.CreateMock(presubmit.InputApi)
input_api.re = presubmit.re
+ input_api.traceback = presubmit.traceback
input_api.urllib2 = self.mox.CreateMock(presubmit.urllib2)
input_api.unittest = unittest
return input_api
@@ -945,15 +956,29 @@ class CannedChecksUnittest(PresubmitTestsBase):
self.assertEquals(results[0].__class__,
presubmit.OutputApi.PresubmitError)
- def testRunPythonUnitTests1(self):
+ def testRunPythonUnitTestsNoTest(self):
input_api = self.MockInputApi()
+ input_api.is_committing = False
self.mox.ReplayAll()
results = presubmit_canned_checks.RunPythonUnitTests(
input_api, presubmit.OutputApi, [])
self.assertEquals(results, [])
- def testRunPythonUnitTests2(self):
+ def testRunPythonUnitTestsNonExistent1(self):
input_api = self.MockInputApi()
+ input_api.is_committing = False
+ presubmit_canned_checks._RunPythonUnitTests_LoadTests('_non_existent_module'
+ ).AndRaise(exceptions.ImportError('Blehh'))
+ self.mox.ReplayAll()
+ results = presubmit_canned_checks.RunPythonUnitTests(
+ input_api, presubmit.OutputApi, ['_non_existent_module'])
+ self.assertEquals(len(results), 1)
+ self.assertEquals(results[0].__class__,
+ presubmit.OutputApi.PresubmitNotifyResult)
+
+ def testRunPythonUnitTestsNonExistent2(self):
+ input_api = self.MockInputApi()
+ input_api.is_committing = True
presubmit_canned_checks._RunPythonUnitTests_LoadTests('_non_existent_module'
).AndRaise(exceptions.ImportError('Blehh'))
self.mox.ReplayAll()
@@ -962,8 +987,21 @@ class CannedChecksUnittest(PresubmitTestsBase):
self.assertEquals(len(results), 1)
self.assertEquals(results[0].__class__, presubmit.OutputApi.PresubmitError)
- def testRunPythonUnitTests3(self):
+ def testRunPythonUnitTestsEmpty1(self):
+ input_api = self.MockInputApi()
+ input_api.is_committing = False
+ test_module = self.mox.CreateMockAnything()
+ presubmit_canned_checks._RunPythonUnitTests_LoadTests('test_module'
+ ).AndReturn([])
+ self.mox.ReplayAll()
+
+ results = presubmit_canned_checks.RunPythonUnitTests(
+ input_api, presubmit.OutputApi, ['test_module'])
+ self.assertEquals(results, [])
+
+ def testRunPythonUnitTestsEmpty2(self):
input_api = self.MockInputApi()
+ input_api.is_committing = True
test_module = self.mox.CreateMockAnything()
presubmit_canned_checks._RunPythonUnitTests_LoadTests('test_module'
).AndReturn([])
@@ -973,8 +1011,33 @@ class CannedChecksUnittest(PresubmitTestsBase):
input_api, presubmit.OutputApi, ['test_module'])
self.assertEquals(results, [])
- def testRunPythonUnitTests4(self):
+ def testRunPythonUnitTestsFailure1(self):
+ input_api = self.MockInputApi()
+ input_api.is_committing = False
+ input_api.unittest = self.mox.CreateMock(unittest)
+ test = self.mox.CreateMockAnything()
+ presubmit_canned_checks._RunPythonUnitTests_LoadTests('test_module'
+ ).AndReturn([test])
+ runner = self.mox.CreateMockAnything()
+ input_api.unittest.TextTestRunner(verbosity=0).AndReturn(runner)
+ suite = self.mox.CreateMockAnything()
+ input_api.unittest.TestSuite([test]).AndReturn(suite)
+ test_result = self.mox.CreateMockAnything()
+ runner.run(suite).AndReturn(test_result)
+ test_result.wasSuccessful().AndReturn(False)
+ test_result.failures = 2
+ test_result.errors = 3
+ self.mox.ReplayAll()
+
+ results = presubmit_canned_checks.RunPythonUnitTests(
+ input_api, presubmit.OutputApi, ['test_module'])
+ self.assertEquals(len(results), 1)
+ self.assertEquals(results[0].__class__,
+ presubmit.OutputApi.PresubmitNotifyResult)
+
+ def testRunPythonUnitTestsFailure2(self):
input_api = self.MockInputApi()
+ input_api.is_committing = True
input_api.unittest = self.mox.CreateMock(unittest)
test = self.mox.CreateMockAnything()
presubmit_canned_checks._RunPythonUnitTests_LoadTests('test_module'
@@ -995,8 +1058,9 @@ class CannedChecksUnittest(PresubmitTestsBase):
self.assertEquals(len(results), 1)
self.assertEquals(results[0].__class__, presubmit.OutputApi.PresubmitError)
- def testRunPythonUnitTests5(self):
+ def testRunPythonUnitTestsSuccess(self):
input_api = self.MockInputApi()
+ input_api.is_committing = False
input_api.unittest = self.mox.CreateMock(unittest)
test = self.mox.CreateMockAnything()
presubmit_canned_checks._RunPythonUnitTests_LoadTests('test_module'
« no previous file with comments | « presubmit_support.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698