Chromium Code Reviews| Index: PRESUBMIT_test_mocks.py |
| diff --git a/PRESUBMIT_test_mocks.py b/PRESUBMIT_test_mocks.py |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..1b32eb5d5152a35a33deb58f6e6ce33c1089ab0e |
| --- /dev/null |
| +++ b/PRESUBMIT_test_mocks.py |
| @@ -0,0 +1,85 @@ |
| +# Copyright 2014 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. |
| + |
| +import json |
| +import os |
| +import re |
| +import subprocess |
| +import sys |
| + |
| + |
| +class MockInputApi(object): |
|
brettw
2014/12/03 19:28:02
Can these classes have class-level comments explai
|
| + def __init__(self): |
| + self.json = json |
| + self.re = re |
| + self.os_path = os.path |
| + self.python_executable = sys.executable |
| + self.subprocess = subprocess |
| + self.files = [] |
| + self.is_committing = False |
| + |
| + def AffectedFiles(self, file_filter=None): |
| + return self.files |
| + |
| + def PresubmitLocalPath(self): |
| + return os.path.dirname(__file__) |
| + |
| + def ReadFile(self, filename, mode='rU'): |
| + for file_ in self.files: |
| + if file_.LocalPath() == filename: |
| + return '\n'.join(file_.NewContents()) |
| + # Otherwise, file is not in our mock API. |
| + raise IOError, "No such file or directory: '%s'" % filename |
| + |
| + |
| +class MockOutputApi(object): |
| + class PresubmitResult(object): |
| + def __init__(self, message, items=None, long_text=''): |
| + self.message = message |
| + self.items = items |
| + self.long_text = long_text |
| + |
| + class PresubmitError(PresubmitResult): |
| + def __init__(self, message, items, long_text=''): |
| + MockOutputApi.PresubmitResult.__init__(self, message, items, long_text) |
| + self.type = 'error' |
| + |
| + class PresubmitPromptWarning(PresubmitResult): |
| + def __init__(self, message, items, long_text=''): |
| + MockOutputApi.PresubmitResult.__init__(self, message, items, long_text) |
| + self.type = 'warning' |
| + |
| + class PresubmitNotifyResult(PresubmitResult): |
| + def __init__(self, message, items, long_text=''): |
| + MockOutputApi.PresubmitResult.__init__(self, message, items, long_text) |
| + self.type = 'notify' |
| + |
| + class PresubmitPromptOrNotify(PresubmitResult): |
| + def __init__(self, message, items, long_text=''): |
| + MockOutputApi.PresubmitResult.__init__(self, message, items, long_text) |
| + self.type = 'promptOrNotify' |
| + |
| + |
| +class MockFile(object): |
| + def __init__(self, local_path, new_contents): |
| + self._local_path = local_path |
| + self._new_contents = new_contents |
| + self._changed_contents = [(i + 1, l) for i, l in enumerate(new_contents)] |
| + |
| + def ChangedContents(self): |
| + return self._changed_contents |
| + |
| + def NewContents(self): |
| + return self._new_contents |
| + |
| + def LocalPath(self): |
| + return self._local_path |
| + |
| + |
| +class MockChange(object): |
| + def __init__(self, changed_files): |
| + self._changed_files = changed_files |
| + |
| + def LocalPaths(self): |
| + return self._changed_files |