| #!/usr/bin/env vpython3 |
| |
| # Copyright (c) 2022 The WebRTC project authors. All Rights Reserved. |
| # |
| # Use of this source code is governed by a BSD-style license |
| # that can be found in the LICENSE file in the root of the source |
| # tree. An additional intellectual property rights grant can be found |
| # in the file PATENTS. All contributing project authors may |
| # be found in the AUTHORS file in the root of the source tree. |
| |
| import difflib |
| import os |
| import shlex |
| |
| # Runs PRESUBMIT.py in py3 mode by git cl presubmit. |
| USE_PYTHON3 = True |
| |
| |
| def CheckPatchFormatted(input_api, output_api): |
| results = [] |
| file_filter = lambda x: x.LocalPath().endswith('.pyl') |
| affected_files = input_api.AffectedFiles( |
| include_deletes=False, file_filter=file_filter |
| ) |
| |
| diffs = [] |
| for f in affected_files: |
| # NewContents just reads the file. |
| prev_content = f.NewContents() |
| |
| cmd = ['yapf', '-i', f.AbsoluteLocalPath()] |
| if input_api.subprocess.call(cmd): |
| results.append( |
| output_api.PresubmitError('Error calling "' + shlex.join(cmd) + '"') |
| ) |
| |
| # Make sure NewContents reads the updated files from disk and not cache. |
| new_content = f.NewContents(flush_cache=True) |
| if new_content != prev_content: |
| path = f.LocalPath() |
| diff = difflib.unified_diff(prev_content, new_content, path, path, lineterm='') |
| diffs.append('\n'.join(diff)) |
| |
| if diffs: |
| combined_diffs = '\n'.join(diffs) |
| msg = ( |
| 'Diff found after running "yapf -i" on modified .pyl files:\n\n' |
| f'{combined_diffs}\n\n' |
| 'Please commit or discard the new changes.' |
| ) |
| results.append(output_api.PresubmitError(msg)) |
| |
| return results |
| |
| |
| def CheckSourceSideSpecs(input_api, output_api): |
| d = os.path.dirname |
| webrtc_root = d(d(input_api.PresubmitLocalPath())) |
| gen_script = os.path.join(webrtc_root, 'testing', 'buildbot', |
| 'generate_buildbot_json.py') |
| |
| commands = [ |
| input_api.Command(name='generate_buildbot_json', |
| cmd=[ |
| input_api.python3_executable, gen_script, '--check', |
| '--verbose', '--pyl-files-dir', |
| input_api.PresubmitLocalPath() |
| ], |
| kwargs={}, |
| message=output_api.PresubmitError), |
| ] |
| return input_api.RunTests(commands) |
| |
| |
| def CheckChangeOnUpload(input_api, output_api): |
| results = [] |
| results.extend(CheckPatchFormatted(input_api, output_api)) |
| results.extend(CheckSourceSideSpecs(input_api, output_api)) |
| return results |
| |
| |
| def CheckChangeOnCommit(input_api, output_api): |
| results = [] |
| results.extend(CheckPatchFormatted(input_api, output_api)) |
| results.extend(CheckSourceSideSpecs(input_api, output_api)) |
| return results |