Commit fa410372 authored by maruel@chromium.org's avatar maruel@chromium.org

Add pylint to presubmit checks.

This tool has been quite useful noticing errors in the past and I'd have avoided a breakage in r58936 if I had run it.

Had to fix a few scripts first.

BUG=none
TEST=new test

Review URL: http://codereview.chromium.org/3337018

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@59107 0039d316-1c4b-4281-b951-d872f2087c98
parent 5b3f8851
......@@ -25,6 +25,7 @@ def CheckChangeOnUpload(input_api, output_api):
output_api,
UNIT_TESTS))
output.extend(WasGitClUploadHookModified(input_api, output_api))
output.extend(RunPylint(input_api, output_api))
return output
......@@ -36,6 +37,7 @@ def CheckChangeOnCommit(input_api, output_api):
output.extend(input_api.canned_checks.CheckDoNotSubmit(input_api,
output_api))
output.extend(WasGitClUploadHookModified(input_api, output_api))
output.extend(RunPylint(input_api, output_api))
return output
def WasGitClUploadHookModified(input_api, output_api):
......@@ -46,3 +48,16 @@ def WasGitClUploadHookModified(input_api, output_api):
'Don\'t forget to fix git-cl to download the newest version of '
'git-cl-upload-hook')]
return []
def RunPylint(input_api, output_api):
import glob
files = glob.glob('*.py')
# It's a python script
files.append('git-try')
# It uses non-standard pylint exceptions that makes pylint always fail.
files.remove('cpplint.py')
proc = input_api.subprocess.Popen(['pylint', '-E'] + files)
proc.communicate()
if proc.returncode:
return [output_api.PresubmitError('Fix pylint errors first.')]
return []
......@@ -133,7 +133,7 @@ def Main():
help="doesn't sync before building")
parser.add_option("", "--print-latest", action="store_true", default=False,
help="print the latest buildable revision and exit")
options, args = parser.parse_args()
options, args = parser.parse_args(None)
if options.print_latest:
print GetRevision() or "HEAD"
......
......@@ -402,11 +402,9 @@ def drover(options, args):
# Override the default properties if there is a drover.properties file.
global file_pattern_
if os.path.exists("drover.properties"):
f = open("drover.properties")
exec(f)
f.close()
if FILE_PATTERN:
file_pattern_ = FILE_PATTERN
FILE_PATTERN = file_pattern_
execfile("drover.properties")
file_pattern_ = FILE_PATTERN
if options.revert and options.branch:
url = BRANCH_URL.replace("$branch", options.branch)
......
......@@ -588,18 +588,18 @@ class Change(object):
# From the description text, build up a dictionary of key/value pairs
# plus the description minus all key/value or "tag" lines.
self._description_without_tags = []
description_without_tags = []
self.tags = {}
for line in self._full_description.splitlines():
m = self._TAG_LINE_RE.match(line)
if m:
self.tags[m.group('key')] = m.group('value')
else:
self._description_without_tags.append(line)
description_without_tags.append(line)
# Change back to text and remove whitespace at end.
self._description_without_tags = '\n'.join(self._description_without_tags)
self._description_without_tags = self._description_without_tags.rstrip()
self._description_without_tags = (
'\n'.join(description_without_tags).rstrip())
self._affected_files = [
self._AFFECTED_FILES(info[1], info[0].strip(), self._local_root)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment