#!/usr/bin/python -u """ Wrapper to run 'suite_scheduler.py --sanity' before uploading a patch. This script is invoked through PRESUBMIT.cfg from repohooks, and expects a list of commit files in the environment variable. """ import os, re, sys import common from autotest_lib.client.common_lib import utils def _commit_contains_ini_or_control(): """ Checks if commit contains suite_scheduler.ini or a control file. @return: True if one of the files in the commit is suite_scheduler.ini. """ file_list = os.environ.get('PRESUBMIT_FILES') if file_list is None: print 'Expected a list of presubmit files in the environment variable.' sys.exit(1) pattern = re.compile(r'.*files/suite_scheduler.ini$|.*/control(?:\.\w+)?$') return any (pattern.search(file_path) for file_path in file_list.split('\n')) def main(): """ Main function, invokes suite scheduler's sanity checker if the commit contains either suite_scheduler.ini or a control file. """ if _commit_contains_ini_or_control(): site_utils_dir = os.path.dirname( os.path.dirname(os.path.abspath(__file__))) suite_scheduler = os.path.join(site_utils_dir, 'suite_scheduler/suite_scheduler.py') output = utils.system_output(suite_scheduler + ' --sanity') if output: print output sys.exit(1) if __name__ == '__main__': main()