1*d9f75844SAndroid Build Coastguard Worker#!/usr/bin/env vpython3 2*d9f75844SAndroid Build Coastguard Worker 3*d9f75844SAndroid Build Coastguard Worker# Copyright (c) 2022 The WebRTC project authors. All Rights Reserved. 4*d9f75844SAndroid Build Coastguard Worker# 5*d9f75844SAndroid Build Coastguard Worker# Use of this source code is governed by a BSD-style license 6*d9f75844SAndroid Build Coastguard Worker# that can be found in the LICENSE file in the root of the source 7*d9f75844SAndroid Build Coastguard Worker# tree. An additional intellectual property rights grant can be found 8*d9f75844SAndroid Build Coastguard Worker# in the file PATENTS. All contributing project authors may 9*d9f75844SAndroid Build Coastguard Worker# be found in the AUTHORS file in the root of the source tree. 10*d9f75844SAndroid Build Coastguard Worker 11*d9f75844SAndroid Build Coastguard Workerimport os 12*d9f75844SAndroid Build Coastguard Worker 13*d9f75844SAndroid Build Coastguard Worker# Runs PRESUBMIT.py in py3 mode by git cl presubmit. 14*d9f75844SAndroid Build Coastguard WorkerUSE_PYTHON3 = True 15*d9f75844SAndroid Build Coastguard Worker 16*d9f75844SAndroid Build Coastguard Worker 17*d9f75844SAndroid Build Coastguard Workerdef _HasLocalChanges(input_api): 18*d9f75844SAndroid Build Coastguard Worker ret = input_api.subprocess.call(['git', 'diff', '--quiet']) 19*d9f75844SAndroid Build Coastguard Worker return ret != 0 20*d9f75844SAndroid Build Coastguard Worker 21*d9f75844SAndroid Build Coastguard Worker 22*d9f75844SAndroid Build Coastguard Workerdef CheckPatchFormatted(input_api, output_api): 23*d9f75844SAndroid Build Coastguard Worker results = [] 24*d9f75844SAndroid Build Coastguard Worker file_filter = lambda x: x.LocalPath().endswith('.pyl') 25*d9f75844SAndroid Build Coastguard Worker affected_files = input_api.AffectedFiles(include_deletes=False, 26*d9f75844SAndroid Build Coastguard Worker file_filter=file_filter) 27*d9f75844SAndroid Build Coastguard Worker 28*d9f75844SAndroid Build Coastguard Worker for f in affected_files: 29*d9f75844SAndroid Build Coastguard Worker cmd = ['yapf', '-i', f.AbsoluteLocalPath()] 30*d9f75844SAndroid Build Coastguard Worker if input_api.subprocess.call(cmd): 31*d9f75844SAndroid Build Coastguard Worker results.append(output_api.PresubmitError('Error calling "' + cmd + '"')) 32*d9f75844SAndroid Build Coastguard Worker 33*d9f75844SAndroid Build Coastguard Worker if _HasLocalChanges(input_api): 34*d9f75844SAndroid Build Coastguard Worker msg = ('Diff found after running "yapf -i" on modified .pyl files.\n' 35*d9f75844SAndroid Build Coastguard Worker 'Please commit or discard the new changes.') 36*d9f75844SAndroid Build Coastguard Worker results.append(output_api.PresubmitError(msg)) 37*d9f75844SAndroid Build Coastguard Worker 38*d9f75844SAndroid Build Coastguard Worker return results 39*d9f75844SAndroid Build Coastguard Worker 40*d9f75844SAndroid Build Coastguard Worker 41*d9f75844SAndroid Build Coastguard Workerdef CheckSourceSideSpecs(input_api, output_api): 42*d9f75844SAndroid Build Coastguard Worker d = os.path.dirname 43*d9f75844SAndroid Build Coastguard Worker webrtc_root = d(d(input_api.PresubmitLocalPath())) 44*d9f75844SAndroid Build Coastguard Worker gen_script = os.path.join(webrtc_root, 'testing', 'buildbot', 45*d9f75844SAndroid Build Coastguard Worker 'generate_buildbot_json.py') 46*d9f75844SAndroid Build Coastguard Worker 47*d9f75844SAndroid Build Coastguard Worker commands = [ 48*d9f75844SAndroid Build Coastguard Worker input_api.Command(name='generate_buildbot_json', 49*d9f75844SAndroid Build Coastguard Worker cmd=[ 50*d9f75844SAndroid Build Coastguard Worker input_api.python3_executable, gen_script, '--check', 51*d9f75844SAndroid Build Coastguard Worker '--verbose', '--pyl-files-dir', 52*d9f75844SAndroid Build Coastguard Worker input_api.PresubmitLocalPath() 53*d9f75844SAndroid Build Coastguard Worker ], 54*d9f75844SAndroid Build Coastguard Worker kwargs={}, 55*d9f75844SAndroid Build Coastguard Worker message=output_api.PresubmitError), 56*d9f75844SAndroid Build Coastguard Worker ] 57*d9f75844SAndroid Build Coastguard Worker return input_api.RunTests(commands) 58*d9f75844SAndroid Build Coastguard Worker 59*d9f75844SAndroid Build Coastguard Worker 60*d9f75844SAndroid Build Coastguard Workerdef CheckChangeOnUpload(input_api, output_api): 61*d9f75844SAndroid Build Coastguard Worker results = [] 62*d9f75844SAndroid Build Coastguard Worker results.extend(CheckPatchFormatted(input_api, output_api)) 63*d9f75844SAndroid Build Coastguard Worker results.extend(CheckSourceSideSpecs(input_api, output_api)) 64*d9f75844SAndroid Build Coastguard Worker return results 65*d9f75844SAndroid Build Coastguard Worker 66*d9f75844SAndroid Build Coastguard Worker 67*d9f75844SAndroid Build Coastguard Workerdef CheckChangeOnCommit(input_api, output_api): 68*d9f75844SAndroid Build Coastguard Worker results = [] 69*d9f75844SAndroid Build Coastguard Worker results.extend(CheckPatchFormatted(input_api, output_api)) 70*d9f75844SAndroid Build Coastguard Worker results.extend(CheckSourceSideSpecs(input_api, output_api)) 71*d9f75844SAndroid Build Coastguard Worker return results 72