| #!/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() |