diff options
author | sergiyb <sergiyb@chromium.org> | 2015-06-01 09:04:29 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-06-01 16:05:06 +0000 |
commit | 87e80c7a628381644013e3b96b437276d9b19bcd (patch) | |
tree | e7457de76651ab4244ec3a13192b01c09957f0c3 /PRESUBMIT.py | |
parent | c27312546394b958473dc441b96274797e0ae339 (diff) | |
download | chromium_src-87e80c7a628381644013e3b96b437276d9b19bcd.zip chromium_src-87e80c7a628381644013e3b96b437276d9b19bcd.tar.gz chromium_src-87e80c7a628381644013e3b96b437276d9b19bcd.tar.bz2 |
Use script in depot_tools to retrieve builders from new cq.cfg
R=pgervais@chromium.org
TEST=ran git-cl-try on this CL
Review URL: https://codereview.chromium.org/1152823005
Cr-Commit-Position: refs/heads/master@{#332200}
Diffstat (limited to 'PRESUBMIT.py')
-rw-r--r-- | PRESUBMIT.py | 49 |
1 files changed, 24 insertions, 25 deletions
diff --git a/PRESUBMIT.py b/PRESUBMIT.py index 751ae52..5a13d2f 100644 --- a/PRESUBMIT.py +++ b/PRESUBMIT.py @@ -1784,29 +1784,28 @@ def CheckChangeOnCommit(input_api, output_api): def GetPreferredTryMasters(project, change): - import re - files = change.LocalPaths() - - import os import json - with open(os.path.join( - change.RepositoryRoot(), 'testing', 'commit_queue', 'config.json')) as f: - cq_config = json.load(f) - cq_verifiers = cq_config.get('verifiers_no_patch', {}) - cq_try_jobs = cq_verifiers.get('try_job_verifier', {}) - builders = cq_try_jobs.get('launched', {}) - - for master, master_config in cq_try_jobs.get('triggered', {}).iteritems(): - for triggered_bot in master_config: - builders.get(master, {}).pop(triggered_bot, None) - - # Explicitly iterate over copies of dicts since we mutate them. - for master in builders.keys(): - for builder in builders[master].keys(): - # Do not trigger presubmit builders, since they're likely to fail - # (e.g. OWNERS checks before finished code review), and we're - # running local presubmit anyway. - if 'presubmit' in builder: - builders[master].pop(builder) - - return builders + import os.path + import subprocess + + cq_config_path = os.path.join( + change.RepositoryRoot(), 'infra', 'config', 'cq.cfg') + # commit_queue.py below is a script in depot_tools directory, which has a + # 'builders' command to retrieve a list of CQ builders from the CQ config. + masters = json.loads(subprocess.check_output( + ['commit_queue', 'builders', cq_config_path], shell=True)) + + # Explicitly iterate over copies of keys since we mutate them. + for master in masters.keys(): + for builder in masters[master].keys(): + # Do not trigger presubmit builders, since they're likely to fail + # (e.g. OWNERS checks before finished code review), and we're + # running local presubmit anyway. + if 'presubmit' in builder: + masters[master].pop(builder) + else: + # Convert testfilter format to the one expected by git-cl-try. + testfilter = masters[master][builder].get('testfilter', 'defaulttests') + masters[master][builder] = [testfilter] + + return masters |