| 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'
|
|
|