From 8575980e16b917b5d94e670a9c6da9029615b575 Mon Sep 17 00:00:00 2001 From: "kjellander@webrtc.org" Date: Tue, 22 Oct 2013 16:47:40 +0000 Subject: [PATCH] Add default trybots for WebRTC try server. Today, our tryjobs default to run on all trybots since we don't have any default list configured in PRESUBMIT.py. Because of this, the --testfilter argument doesn't work unless you also specify --bot when sending the tryjob. With this CL, it is possible to use --testfilter without --bot. It also gets the benefit of excluding unnecessary bots when doing platform-specific changes. Most of the code is copied from Chromium's src/PRESUBMIT.py: https://code.google.com/p/chromium/codesearch#chromium/src/PRESUBMIT.py&l=1030 TEST=tested submitting a tryjob with git try -t compile. BUG=none R=andrew@webrtc.org Review URL: https://webrtc-codereview.appspot.com/2619004 git-svn-id: http://webrtc.googlecode.com/svn/trunk@5016 4adac7df-926f-26a2-2b94-8c16560cd09d --- PRESUBMIT.py | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/PRESUBMIT.py b/PRESUBMIT.py index b8a702fa2..433cdce12 100644 --- a/PRESUBMIT.py +++ b/PRESUBMIT.py @@ -6,6 +6,9 @@ # in the file PATENTS. All contributing project authors may # be found in the AUTHORS file in the root of the source tree. +import re + + def _CheckNoIOStreamInHeaders(input_api, output_api): """Checks to make sure no .h files include .""" files = [] @@ -150,3 +153,42 @@ def CheckChangeOnCommit(input_api, output_api): results.extend(input_api.canned_checks.CheckChangeHasTestField( input_api, output_api)) return results + +# pylint: disable=W0613 +def GetPreferredTrySlaves(project, change): + files = change.LocalPaths() + + ios_bots = [ + 'ios', + 'ios_rel', + ] + linux_bots = [ + 'linux', + 'linux_asan', + 'linux_memcheck', + 'linux_rel', + 'linux_tsan', + ] + mac_bots = [ + 'mac', + 'mac_asan', + 'mac_rel', + 'mac_x64_rel', + ] + win_bots = [ + 'win', + 'win_rel', + 'win_x64_rel', + ] + + if not files or all(re.search(r'[\\/]OWNERS$', f) for f in files): + return [] + + if all(re.search('[/_]ios[/_.]', f) for f in files): + return ios_bots + if all(re.search('\.(m|mm)$|(^|[/_])mac[/_.]', f) for f in files): + return mac_bots + if all(re.search('(^|[/_])win[/_.]', f) for f in files): + return win_bots + + return ['android_ndk'] + ios_bots + linux_bots + mac_bots + win_bots