Index: PRESUBMIT.py |
diff --git a/PRESUBMIT.py b/PRESUBMIT.py |
index 5a13d2fac8151cd30a76b8144fce2d20e680cd5a..751ae525751be38445e4bca2fd0a02c0ac7dd03e 100644 |
--- a/PRESUBMIT.py |
+++ b/PRESUBMIT.py |
@@ -1784,28 +1784,29 @@ |
def GetPreferredTryMasters(project, change): |
+ import re |
+ files = change.LocalPaths() |
+ |
+ import os |
import json |
- 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 |
+ 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 |