blob: 5a2c514271776a47a055ee2fa670d5b54f8afd24 [file] [log] [blame]
#!/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 PRESUBMIT
import unittest
class MockInputApi(object):
def __init__(self):
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):
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
PRESUBMIT._ReadFile = MockReadFile
def tearDown(self):
PRESUBMIT._ReadFile = PRESUBMIT.ReadFile
def testCheckNoCrLfOrTabs(self):
api = MockInputApi()
api.affected_files = [
MockAffectedFile('foo/blat/yoo.notsource'),
MockAffectedFile('foo/blat/source.h'),
MockAffectedFile('foo/blat/source.mm'),
MockAffectedFile('foo/blat/source.py'),
]
self.file_contents = 'file with\nerror\nhere\r\nyes there'
self.failUnless(len(PRESUBMIT.CheckNoCrOrTabs(api, MockOutputApi)) == 1)
self.failUnless(
len(PRESUBMIT.CheckNoCrOrTabs(api, MockOutputApi)[0].items) == 3)
self.file_contents = 'file\twith\ttabs'
self.failUnless(len(PRESUBMIT.CheckNoCrOrTabs(api, MockOutputApi)) == 1)
self.file_contents = 'file\rusing\rCRs'
self.failUnless(len(PRESUBMIT.CheckNoCrOrTabs(api, MockOutputApi)) == 1)
self.file_contents = 'both\ttabs and\r\nCRLF'
self.failUnless(len(PRESUBMIT.CheckNoCrOrTabs(api, MockOutputApi)) == 2)
self.file_contents = 'file with\nzero \\t errors \\r\\n'
self.failIf(PRESUBMIT.CheckNoCrOrTabs(api, MockOutputApi))
if __name__ == '__main__':
unittest.main()