Chromium Code Reviews| Index: tests/presubmit_unittest.py |
| diff --git a/tests/presubmit_unittest.py b/tests/presubmit_unittest.py |
| index 7f5d57191cbe0fdb953150916445746552226065..921697139a969cb560ecf15d0ead2098f865d66e 100755 |
| --- a/tests/presubmit_unittest.py |
| +++ b/tests/presubmit_unittest.py |
| @@ -12,16 +12,19 @@ import unittest |
| import warnings |
| # Local imports |
| +import __init__ |
| import gcl |
| import gclient |
| import presubmit_support as presubmit |
| import presubmit_canned_checks |
| +mox = __init__.mox |
| class PresubmitTestsBase(unittest.TestCase): |
| """Setups and tear downs the mocks but doesn't test anything as-is.""" |
| def setUp(self): |
| self._warnings_stack = warnings.catch_warnings() |
| + self.mox = mox.Mox() |
| warnings.simplefilter("ignore", DeprecationWarning) |
| self.original_IsFile = os.path.isfile |
| def MockIsFile(f): |
| @@ -87,6 +90,10 @@ def CheckChangeOnUpload(input_api, output_api): |
| gcl.GetRepositoryRoot = MockGetRepositoryRoot |
| self._sys_stdout = sys.stdout |
| sys.stdout = StringIO.StringIO() |
| + self._os_path_exists = os.path.exists |
| + os.path.exists = self.mox.CreateMockAnything() |
| + self._os_path_isdir = os.path.isdir |
| + os.path.isdir = self.mox.CreateMockAnything() |
| def tearDown(self): |
| os.path.isfile = self.original_IsFile |
| @@ -95,6 +102,8 @@ def CheckChangeOnUpload(input_api, output_api): |
| gcl.ReadFile = self.original_ReadFile |
| gcl.GetRepositoryRoot = self.original_GetRepositoryRoot |
| sys.stdout = self._sys_stdout |
| + os.path.exists = self._os_path_exists |
| + os.path.isdir = self._os_path_isdir |
| self._warnings_stack = None |
| @staticmethod |
| @@ -160,7 +169,15 @@ class PresubmitUnittest(PresubmitTestsBase): |
| ['M', 'flop/notfound.txt'], # not found in SVN, still exists locally |
| ['D', 'boo/flap.h'], |
| ] |
| - |
| + os.path.exists(os.path.join('foo', 'blat.cc')).AndReturn(True) |
| + os.path.isdir(os.path.join('foo', 'blat.cc')).AndReturn(False) |
| + os.path.exists('binary.dll').AndReturn(True) |
| + os.path.isdir('binary.dll').AndReturn(False) |
| + os.path.exists('isdir').AndReturn(True) |
| + os.path.isdir('isdir').AndReturn(True) |
| + os.path.exists(os.path.join('flop', 'notfound.txt')).AndReturn(False) |
| + os.path.exists(os.path.join('boo', 'flap.h')).AndReturn(False) |
| + self.mox.ReplayAll() |
| ci = gcl.ChangeInfo(name='mychange', |
| description='\n'.join(description_lines), |
| files=files) |
| @@ -218,6 +235,7 @@ class PresubmitUnittest(PresubmitTestsBase): |
| self.failUnless(rhs_lines[3][0].LocalPath() == files[3][1]) |
| self.failUnless(rhs_lines[3][1] == 2) |
| self.failUnless(rhs_lines[3][2] == 'two:%s' % files[3][1]) |
| + self.mox.VerifyAll() |
| def testExecPresubmitScript(self): |
| description_lines = ('Hello there', |
| @@ -387,6 +405,11 @@ def CheckChangeOnCommit(input_api, output_api): |
| ['A', 'isdir'], |
| ['A', 'isdir\\blat.cc'], |
| ] |
| + os.path.exists('isdir').AndReturn(True) |
| + os.path.isdir('isdir').AndReturn(True) |
| + os.path.exists(os.path.join('isdir', 'blat.cc')).AndReturn(True) |
| + os.path.isdir(os.path.join('isdir', 'blat.cc')).AndReturn(False) |
| + self.mox.ReplayAll() |
| ci = gcl.ChangeInfo(name='mychange', |
| description='foo', |
| files=files) |
| @@ -395,7 +418,7 @@ def CheckChangeOnCommit(input_api, output_api): |
| affected_files = change.AffectedFiles(include_dirs=False) |
| self.failUnless(len(affected_files) == 1) |
| self.failUnless(affected_files[0].LocalPath().endswith('blat.cc')) |
| - |
| + self.mox.VerifyAll() |
| affected_files_and_dirs = change.AffectedFiles(include_dirs=True) |
| self.failUnless(len(affected_files_and_dirs) == 2) |
| @@ -510,6 +533,16 @@ class InputApiUnittest(PresubmitTestsBase): |
| ['A', 'boo/flap.h'], |
| ] |
| + os.path.exists(os.path.join('foo', 'blat.cc')).AndReturn(True) |
| + os.path.isdir(os.path.join('foo', 'blat.cc')).AndReturn(False) |
| + os.path.exists(os.path.join('foo', 'blat', 'binary.dll')).AndReturn(True) |
| + os.path.isdir(os.path.join('foo', 'blat', 'binary.dll')).AndReturn(False) |
| + os.path.exists(os.path.join('foo', 'mat', 'beingdeleted.txt')).AndReturn( |
| + False) |
| + os.path.exists(os.path.join('flop', 'notfound.txt')).AndReturn(False) |
| + os.path.exists(os.path.join('boo', 'flap.h')).AndReturn(True) |
| + os.path.isdir(os.path.join('boo', 'flap.h')).AndReturn(False) |
| + self.mox.ReplayAll() |
| ci = gcl.ChangeInfo(name='mychange', |
| description='\n'.join(description_lines), |
| files=files) |
| @@ -532,6 +565,7 @@ class InputApiUnittest(PresubmitTestsBase): |
| self.failUnless(len(rhs_lines) == 2) |
| self.assertEqual(rhs_lines[0][0].LocalPath(), |
| presubmit.normpath('foo/blat.cc')) |
| + self.mox.VerifyAll() |
| def testGetAbsoluteLocalPath(self): |
| # Regression test for bug of presubmit stuff that relies on invoking |
| @@ -629,10 +663,8 @@ class OuputApiUnittest(PresubmitTestsBase): |
| class AffectedFileUnittest(PresubmitTestsBase): |
| def testMembersChanged(self): |
| members = [ |
| - 'AbsoluteLocalPath', 'Action', 'IsDirectory', 'IsTextFile', |
| - 'LocalPath', 'NewContents', |
| - 'OldContents', 'OldFileTempPath', 'Property', 'ServerPath', 'action', |
| - 'is_directory', 'path', 'properties', 'repository_root', 'server_path', |
| + 'AbsoluteLocalPath', 'Action', 'IsDirectory', 'IsTextFile', 'LocalPath', |
| + 'NewContents', 'OldContents', 'OldFileTempPath', 'Property', 'ServerPath', |
| ] |
| # If this test fails, you should add the relevant test. |
| self.compareMembers(presubmit.AffectedFile('a', 'b'), members) |
| @@ -640,11 +672,14 @@ class AffectedFileUnittest(PresubmitTestsBase): |
| def testAffectedFile(self): |
| af = presubmit.SvnAffectedFile('foo/blat.cc', 'M') |
| + os.path.exists(os.path.join('foo', 'blat.cc')).AndReturn(False) |
| + self.mox.ReplayAll() |
| self.failUnless(af.ServerPath() == 'svn:/foo/foo/blat.cc') |
| self.failUnless(af.LocalPath() == presubmit.normpath('foo/blat.cc')) |
| self.failUnless(af.Action() == 'M') |
| self.failUnless(af.NewContents() == ['one:%s' % af.LocalPath(), |
| 'two:%s' % af.LocalPath()]) |
| + self.mox.VerifyAll() |
| af = presubmit.AffectedFile('notfound.cc', 'A') |
| self.failUnless(af.ServerPath() == '') |
| @@ -654,6 +689,25 @@ class AffectedFileUnittest(PresubmitTestsBase): |
| self.failUnless(affected_file.Property('svn:secret-property') == |
| 'secret-property-value') |
| + def testIsDirectoryNotExists(self): |
| + # Verify cache coherency |
| + os.path.exists('foo.cc').AndReturn(False) |
| + self.mox.ReplayAll() |
| + affected_file = presubmit.SvnAffectedFile('foo.cc', 'A') |
| + self.failIf(affected_file.IsDirectory()) |
| + self.failIf(affected_file.IsDirectory()) |
|
Jói Sigurðsson
2009/05/28 21:30:51
duplicate?
M-A Ruel
2009/05/29 00:59:55
Yes, that's to verify the cache coherency. I've mo
|
| + self.mox.VerifyAll() |
| + |
| + def testIsDirectory(self): |
| + # Verify cache coherency |
| + os.path.exists('foo.cc').AndReturn(True) |
| + os.path.isdir('foo.cc').AndReturn(True) |
| + self.mox.ReplayAll() |
| + affected_file = presubmit.SvnAffectedFile('foo.cc', 'A') |
| + self.failUnless(affected_file.IsDirectory()) |
| + self.failUnless(affected_file.IsDirectory()) |
|
Jói Sigurðsson
2009/05/28 21:30:51
duplicate?
|
| + self.mox.VerifyAll() |
| + |
| class CannedChecksUnittest(PresubmitTestsBase): |
| """Tests presubmit_canned_checks.py.""" |