| # Copyright (c) 2012 The Native Client Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| # Documentation on PRESUBMIT.py can be found at: |
| # http://www.chromium.org/developers/how-tos/depottools/presubmit-scripts |
| |
| EXCLUDE_PROJECT_CHECKS_DIRS = [ '.' ] |
| |
| import subprocess |
| def CheckGitBranch(): |
| p = subprocess.Popen("git branch -vv", shell=True, |
| stdout=subprocess.PIPE) |
| output, _ = p.communicate() |
| |
| lines = output.split('\n') |
| for line in lines: |
| # output format for checked-out branch should be |
| # * branchname hash [TrackedBranchName ... |
| toks = line.split() |
| if '*' not in toks[0]: |
| continue |
| if not 'origin/master' in toks[3]: |
| warning = 'Warning: your current branch:\n' + line |
| warning += '\nis not tracking origin/master. git cl push may silently ' |
| warning += 'fail to push your change. To fix this, do\n' |
| warning += 'git branch -u origin/master' |
| return warning |
| return None |
| print 'Warning: presubmit check could not determine local git branch' |
| return None |
| |
| def _CommonChecks(input_api, output_api): |
| """Checks for both upload and commit.""" |
| results = [] |
| results.extend(input_api.canned_checks.PanProjectChecks( |
| input_api, output_api, project_name='Native Client', |
| excluded_paths=tuple(EXCLUDE_PROJECT_CHECKS_DIRS))) |
| branch_warning = CheckGitBranch() |
| if branch_warning: |
| results.append(output_api.PresubmitPromptWarning(branch_warning)) |
| return results |
| |
| def CheckChangeOnUpload(input_api, output_api): |
| """Verifies all changes in all files. |
| Args: |
| input_api: the limited set of input modules allowed in presubmit. |
| output_api: the limited set of output modules allowed in presubmit. |
| """ |
| report = [] |
| report.extend(_CommonChecks(input_api, output_api)) |
| return report |
| |
| def CheckChangeOnCommit(input_api, output_api): |
| """Verifies all changes in all files and verifies that the |
| tree is open and can accept a commit. |
| Args: |
| input_api: the limited set of input modules allowed in presubmit. |
| output_api: the limited set of output modules allowed in presubmit. |
| """ |
| report = [] |
| report.extend(CheckChangeOnUpload(input_api, output_api)) |
| return report |
| |
| def GetPreferredTrySlaves(project, change): |
| return [] |