forked from sanyaade-mobiledev/chromium.src
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add presubmit check to verify PPAPI C headers match IDL files.
Update outfile to print a better filename on diff. Update fix missing 'name' in idl_generator.py BUG= http://code.google.com/p/chromium/issues/detail?id=93534 TEST= gcl upload | presubmit (after modifying a .h or .idl file) R= brettw@chromium.org Review URL: http://codereview.chromium.org/7700001 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@101092 0039d316-1c4b-4281-b951-d872f2087c98
- Loading branch information
noelallen@google.com
committed
Sep 14, 2011
1 parent
e66b721
commit 3937578
Showing
3 changed files
with
76 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
# Copyright (c) 2011 The Chromium Authors. All rights reserved. | ||
# Use of this source code is governed by a BSD-style license that can be | ||
# found in the LICENSE file. | ||
|
||
import os | ||
import sys | ||
import subprocess | ||
|
||
def CheckChange(input_api, output_api): | ||
results = [] | ||
|
||
# Verify all modified *.idl have a matching *.h | ||
files = input_api.LocalPaths() | ||
h_files = [] | ||
idl_files = [] | ||
|
||
for filename in files: | ||
name, ext = os.path.splitext(filename) | ||
name_parts = name.split(os.sep) | ||
if name_parts[0:2] == ['ppapi', 'c'] and ext == '.h': | ||
h_files.append('/'.join(name_parts[2:])) | ||
if name_parts[0:2] == ['ppapi', 'api'] and ext == '.idl': | ||
idl_files.append('/'.join(name_parts[2:])) | ||
|
||
# Generate a list of all appropriate *.h and *.idl changes in this CL. | ||
both = h_files + idl_files | ||
|
||
# If there aren't any, we are done checking. | ||
if not both: return results | ||
|
||
missing = [] | ||
for filename in idl_files: | ||
if filename not in set(h_files): | ||
missing.append(' ppapi/c/%s.h' % filename) | ||
for filename in h_files: | ||
if filename not in set(idl_files): | ||
missing.append(' ppapi/api/%s.idl' % filename) | ||
|
||
if missing: | ||
results.append( | ||
output_api.PresubmitPromptWarning('Missing matching PPAPI definition:', | ||
long_text='\n'.join(missing))) | ||
|
||
# Verify all *.h files match *.idl definitions, use: | ||
# --test to prevent output to disk | ||
# --diff to generate a unified diff | ||
# --out to pick which files to examine (only the ones in the CL) | ||
ppapi_dir = input_api.PresubmitLocalPath() | ||
cmd = [ sys.executable, 'generator.py', | ||
'--wnone', '--diff', '--test','--cgen', '--range=M13,M14'] | ||
|
||
# Only generate output for IDL files references (as *.h or *.idl) in this CL | ||
cmd.append('--out=' + ','.join([name + '.idl' for name in both])) | ||
|
||
p = subprocess.Popen(cmd, cwd=os.path.join(ppapi_dir, 'generators'), | ||
stdout=subprocess.PIPE, | ||
stderr=subprocess.PIPE) | ||
(p_stdout, p_stderr) = p.communicate() | ||
if p.returncode: | ||
results.append( | ||
output_api.PresubmitError('PPAPI IDL Diff detected: Run the generator.', | ||
long_text=p_stderr)) | ||
return results | ||
|
||
def CheckChangeOnUpload(input_api, output_api): | ||
# return [] | ||
return CheckChange(input_api, output_api) | ||
|
||
def CheckChangeOnCommit(input_api, output_api): | ||
# return [] | ||
return CheckChange(input_api, output_api) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters