aboutsummaryrefslogtreecommitdiff
path: root/presubmit_test_mocks.py
diff options
context:
space:
mode:
authorArtem Titov <titovartem@webrtc.org>2018-05-18 13:33:51 +0200
committerCommit Bot <commit-bot@chromium.org>2018-05-18 12:39:26 +0000
commit4103b383505575b23222f77fd04116d2f6c10273 (patch)
treeb38a4d627413e05379da88a7ad9e3ac3c6d907fe /presubmit_test_mocks.py
parenta6ccd25eea6e6adabb10c64d056c5c5ad1c4cfb2 (diff)
downloadwebrtc-4103b383505575b23222f77fd04116d2f6c10273.tar.gz
Add presubmit check for changes in 3pp
Presubmit check will test will new changes be overriden by autoroll or not. In more details presubmit will check: 1. Each dependency in third_party have to be specified in one of: a. THIRD_PARTY_CHROMIUM_DEPS.json b. THIRD_PARTY_WEBRTC_DEPS.json 2. Each dependency not specified in both files from #1 3. Changes won't be overriden by chromium third_party deps autoroll: a. Changes were made in WebRTC owned dependency b. Changes were addition of new Chromium owned dependency Bug: webrtc:8366 Change-Id: Ic5db24289e7fa461e0959f75cfbe81ecc65af4b5 Reviewed-on: https://webrtc-review.googlesource.com/77421 Reviewed-by: Karl Wiberg <kwiberg@webrtc.org> Reviewed-by: Patrik Höglund <phoglund@webrtc.org> Commit-Queue: Artem Titov <titovartem@webrtc.org> Cr-Commit-Position: refs/heads/master@{#23301}
Diffstat (limited to 'presubmit_test_mocks.py')
-rw-r--r--presubmit_test_mocks.py56
1 files changed, 53 insertions, 3 deletions
diff --git a/presubmit_test_mocks.py b/presubmit_test_mocks.py
index 4b2b3c7522..6c0b0c48a1 100644
--- a/presubmit_test_mocks.py
+++ b/presubmit_test_mocks.py
@@ -9,6 +9,9 @@
# This file is inspired to [1].
# [1] - https://cs.chromium.org/chromium/src/PRESUBMIT_test_mocks.py
+import os.path
+import re
+
class MockInputApi(object):
"""Mock class for the InputApi class.
@@ -20,10 +23,38 @@ class MockInputApi(object):
def __init__(self):
self.change = MockChange([], [])
self.files = []
+ self.presubmit_local_path = os.path.dirname(__file__)
def AffectedSourceFiles(self, file_filter=None):
- # pylint: disable=unused-argument
- return self.files
+ return self.AffectedFiles(file_filter=file_filter)
+
+ def AffectedFiles(self, file_filter=None, include_deletes=False):
+ for f in self.files:
+ if file_filter and not file_filter(f):
+ continue
+ if not include_deletes and f.Action() == 'D':
+ continue
+ yield f
+
+ @classmethod
+ def FilterSourceFile(cls, affected_file, white_list=(), black_list=()):
+ local_path = affected_file.LocalPath()
+ found_in_white_list = not white_list
+ if white_list:
+ for pattern in white_list:
+ compiled_pattern = re.compile(pattern)
+ if compiled_pattern.search(local_path):
+ found_in_white_list = True
+ break
+ if black_list:
+ for pattern in black_list:
+ compiled_pattern = re.compile(pattern)
+ if compiled_pattern.search(local_path):
+ return False
+ return found_in_white_list
+
+ def PresubmitLocalPath(self):
+ return self.presubmit_local_path
def ReadFile(self, affected_file, mode='rU'):
filename = affected_file.AbsoluteLocalPath()
@@ -79,11 +110,30 @@ class MockFile(object):
MockInputApi for presubmit unittests.
"""
- def __init__(self, local_path):
+ def __init__(self, local_path, new_contents=None, old_contents=None,
+ action='A'):
+ if new_contents is None:
+ new_contents = ["Data"]
self._local_path = local_path
+ self._new_contents = new_contents
+ self._changed_contents = [(i + 1, l) for i, l in enumerate(new_contents)]
+ self._action = action
+ self._old_contents = old_contents
+
+ def Action(self):
+ return self._action
+
+ def ChangedContents(self):
+ return self._changed_contents
+
+ def NewContents(self):
+ return self._new_contents
def LocalPath(self):
return self._local_path
def AbsoluteLocalPath(self):
return self._local_path
+
+ def OldContents(self):
+ return self._old_contents