diff options
Diffstat (limited to 'googleurl/PRESUBMIT_unittest.py')
-rw-r--r-- | googleurl/PRESUBMIT_unittest.py | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/googleurl/PRESUBMIT_unittest.py b/googleurl/PRESUBMIT_unittest.py new file mode 100644 index 0000000..19231db --- /dev/null +++ b/googleurl/PRESUBMIT_unittest.py @@ -0,0 +1,88 @@ +#!/usr/bin/python +# Copyright (c) 2009 The Chromium Authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +"""Unit tests for top-level Chromium presubmit script. +""" + + +import os +import PRESUBMIT +import re +import unittest + + +class MockInputApi(object): + def __init__(self): + self.affected_files = [] + self.re = re + self.os_path = os.path + + def AffectedFiles(self): + return self.affected_files + + def AffectedTextFiles(self, include_deletes=True): + return self.affected_files + + +class MockAffectedFile(object): + def __init__(self, path): + self.path = path + + def LocalPath(self): + return self.path + + +class MockOutputApi(object): + class PresubmitError(object): + def __init__(self, msg, items=[], long_text=''): + self.msg = msg + self.items = items + + +class PresubmitUnittest(unittest.TestCase): + def setUp(self): + self.file_contents = '' + def MockReadFile(path): + self.failIf(path.endswith('notsource')) + return self.file_contents + self._ReadFile = PRESUBMIT.ReadFile + PRESUBMIT.ReadFile = MockReadFile + + def tearDown(self): + PRESUBMIT.ReadFile = self._ReadFile + + def testLocalChecks(self): + api = MockInputApi() + api.affected_files = [ + MockAffectedFile('foo/blat/yoo.notsource'), + MockAffectedFile('third_party/blat/source.cc'), + MockAffectedFile('foo/blat/source.h'), + MockAffectedFile('foo/blat/source.mm'), + MockAffectedFile('foo/blat/source.py'), + ] + self.file_contents = 'file with \n\terror\nhere\r\nyes there' + # 3 source files, 2 errors by file + 1 global CR error. + self.failUnless(len(PRESUBMIT.LocalChecks(api, MockOutputApi)) == 7) + + self.file_contents = 'file\twith\ttabs' + # 3 source files, 1 error by file. + self.failUnless(len(PRESUBMIT.LocalChecks(api, MockOutputApi)) == 3) + + self.file_contents = 'file\rusing\rCRs' + # One global CR error. + self.failUnless(len(PRESUBMIT.LocalChecks(api, MockOutputApi)) == 1) + self.failUnless( + len(PRESUBMIT.LocalChecks(api, MockOutputApi)[0].items) == 3) + + self.file_contents = 'both\ttabs and\r\nCRLF' + # 3 source files, 1 error by file + 1 global CR error. + self.failUnless(len(PRESUBMIT.LocalChecks(api, MockOutputApi)) == 4) + + self.file_contents = 'file with\nzero \\t errors \\r\\n' + self.failIf(PRESUBMIT.LocalChecks(api, MockOutputApi)) + + +if __name__ == '__main__': + unittest.main() |