Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(552)

Unified Diff: git_cl.py

Issue 141493002: Add a canned clang-format presubmit check (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Rebased Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | presubmit_canned_checks.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: git_cl.py
diff --git a/git_cl.py b/git_cl.py
index f6c1ae7d7567f1b500676c1493d575b1ebcca583..d9e2d9803b0203d3203e61721d4e9b6fced0f616 100755
--- a/git_cl.py
+++ b/git_cl.py
@@ -80,15 +80,20 @@ def RunGit(args, **kwargs):
return RunCommand(['git'] + args, **kwargs)
-def RunGitWithCode(args):
+def RunGitWithCode(args, suppress_stderr=False):
"""Returns return code and stdout."""
try:
env = os.environ.copy()
# 'cat' is a magical git string that disables pagers on all platforms.
env['GIT_PAGER'] = 'cat'
+ if suppress_stderr:
+ stderr = subprocess2.VOID
+ else:
+ stderr = sys.stderr
out, code = subprocess2.communicate(['git'] + args,
env=env,
- stdout=subprocess2.PIPE)
+ stdout=subprocess2.PIPE,
+ stderr=stderr)
return code, out[0]
except ValueError:
# When the subprocess fails, it returns None. That triggers a ValueError
@@ -2301,7 +2306,10 @@ def CMDowners(parser, args):
def CMDformat(parser, args):
"""Runs clang-format on the diff."""
CLANG_EXTS = ['.cc', '.cpp', '.h']
- parser.add_option('--full', action='store_true', default=False)
+ parser.add_option('--full', action='store_true',
+ help='Reformat the full content of all touched files')
+ parser.add_option('--dry-run', action='store_true',
+ help='Don\'t modify any file on disk.')
opts, args = parser.parse_args(args)
if args:
parser.error('Unrecognized args: %s' % ' '.join(args))
@@ -2358,8 +2366,10 @@ def CMDformat(parser, args):
if not files:
print "Nothing to format."
return 0
- RunCommand([clang_format_tool, '-i'] + files,
- cwd=top_dir)
+ cmd = [clang_format_tool]
+ if not opts.dry_run:
+ cmd.append('-i')
+ stdout = RunCommand(cmd + files, cwd=top_dir)
else:
env = os.environ.copy()
env['PATH'] = os.path.dirname(clang_format_tool)
@@ -2370,9 +2380,13 @@ def CMDformat(parser, args):
except clang_format.NotFoundError, e:
DieWithError(e)
- cmd = [sys.executable, script, '-p0', '-i']
+ cmd = [sys.executable, script, '-p0']
+ if not opts.dry_run:
+ cmd.append('-i')
- RunCommand(cmd, stdin=diff_output, cwd=top_dir, env=env)
+ stdout = RunCommand(cmd, stdin=diff_output, cwd=top_dir, env=env)
+ if opts.dry_run and len(stdout) > 0:
+ return 2
return 0
« no previous file with comments | « no previous file | presubmit_canned_checks.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698