Index: PRESUBMIT.py |
diff --git a/PRESUBMIT.py b/PRESUBMIT.py |
index aee7722223b6bc150c5dd6a2a3abe31f1223027c..10f7ac06318b6b0854812c46a50ea6b27b99979e 100644 |
--- a/PRESUBMIT.py |
+++ b/PRESUBMIT.py |
@@ -294,12 +294,6 @@ |
'OS_QNX', |
'OS_SOLARIS', |
'OS_WIN', |
-) |
- |
- |
-_PYDEPS_FILES = ( |
- 'build/android/test_runner.pydeps', |
- 'build/secondary/tools/swarming_client/isolate.pydeps', |
) |
@@ -1503,104 +1497,6 @@ |
return results |
-class PydepsChecker(object): |
- def __init__(self, input_api): |
- self._file_cache = {} |
- self._input_api = input_api |
- |
- def _LoadFile(self, path): |
- """Returns the list of paths within a .pydeps file relative to //.""" |
- if path not in self._file_cache: |
- with open(path) as f: |
- self._file_cache[path] = f.read() |
- return self._file_cache[path] |
- |
- def _ComputeNormalizedPydepsEntries(self, pydeps_path): |
- """Returns an interable of paths within the .pydep, relativized to //.""" |
- os_path = self._input_api.os_path |
- pydeps_dir = os_path.dirname(pydeps_path) |
- entries = (l.rstrip() for l in self._LoadFile(pydeps_path).splitlines() |
- if not l.startswith('*')) |
- return (os_path.normpath(os_path.join(pydeps_dir, e)) for e in entries) |
- |
- def _CreateFilesToPydepsMap(self): |
- """Returns a map of local_path -> list_of_pydeps.""" |
- ret = {} |
- for pydep_local_path in _PYDEPS_FILES: |
- for path in self._ComputeNormalizedPydepsEntries(pydep_local_path): |
- ret.setdefault(path, []).append(pydep_local_path) |
- return ret |
- |
- def ComputeAffectedPydeps(self): |
- """Returns an iterable of .pydeps files that might need regenerating.""" |
- affected_pydeps = set() |
- file_to_pydeps_map = None |
- for f in self._input_api.AffectedFiles(include_deletes=True): |
- local_path = f.LocalPath() |
- if local_path == 'DEPS': |
- return _PYDEPS_FILES |
- elif local_path.endswith('.pydeps'): |
- if local_path in _PYDEPS_FILES: |
- affected_pydeps.add(local_path) |
- elif local_path.endswith('.py'): |
- if file_to_pydeps_map is None: |
- file_to_pydeps_map = self._CreateFilesToPydepsMap() |
- affected_pydeps.update(file_to_pydeps_map.get(local_path, ())) |
- return affected_pydeps |
- |
- def DetermineIfStale(self, pydeps_path): |
- """Runs print_python_deps.py to see if the files is stale.""" |
- old_pydeps_data = self._LoadFile(pydeps_path) |
- |
- m = self._input_api.re.search(r'# target: //(.*)', old_pydeps_data) |
- if not m: |
- return ['COULD NOT FIND .pydeps TARGET'] |
- target = m.group(1) |
- m = self._input_api.re.search(r'# root: //(.*)', old_pydeps_data) |
- if not m: |
- return ['COULD NOT FIND .pydeps ROOT'] |
- root = m.group(1) or '.' |
- |
- cmd = ['build/print_python_deps.py', '--root', root, target] |
- new_pydeps_data = self._input_api.subprocess.check_output(cmd) |
- if old_pydeps_data != new_pydeps_data: |
- return cmd[:-1] + ['--output', pydeps_path] + cmd[-1:] |
- |
- |
-def _CheckPydepsNeedsUpdating(input_api, output_api, checker_for_tests=None): |
- """Checks if a .pydeps file needs to be regenerated.""" |
- results = [] |
- # First, check for new / deleted .pydeps. |
- for f in input_api.AffectedFiles(include_deletes=True): |
- if f.LocalPath().endswith('.pydeps'): |
- if f.Action() == 'D' and f.LocalPath() in _PYDEPS_FILES: |
- results.append(output_api.PresubmitError( |
- 'Please update _PYDEPS_FILES within //PRESUBMIT.py to remove %s' % |
- f.LocalPath())) |
- elif f.Action() != 'D' and f.LocalPath() not in _PYDEPS_FILES: |
- results.append(output_api.PresubmitError( |
- 'Please update _PYDEPS_FILES within //PRESUBMIT.py to include %s' % |
- f.LocalPath())) |
- |
- if results: |
- return results |
- |
- checker = checker_for_tests or PydepsChecker(input_api) |
- |
- for pydep_path in checker.ComputeAffectedPydeps(): |
- try: |
- cmd = checker.DetermineIfStale(pydep_path) |
- if cmd: |
- results.append(output_api.PresubmitError( |
- 'File is stale: %s\nTo regenerate, run:\n%s' % (pydep_path, |
- ' '.join(cmd)))) |
- except input_api.subprocess.CalledProcessError as error: |
- return [output_api.PresubmitError('Error running ' + ' '.join(error.cmd), |
- long_text=error.output)] |
- |
- return results |
- |
- |
def _CheckForCopyrightedCode(input_api, output_api): |
"""Verifies that newly added code doesn't contain copyrighted material |
and is properly licensed under the standard Chromium license. |
@@ -1754,7 +1650,6 @@ |
results.extend(_CheckAndroidCrLogUsage(input_api, output_api)) |
results.extend(_CheckAndroidNewMdpiAssetLocation(input_api, output_api)) |
results.extend(_CheckAndroidToastUsage(input_api, output_api)) |
- results.extend(_CheckPydepsNeedsUpdating(input_api, output_api)) |
return results |