summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorthestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-24 01:29:09 +0000
committerthestig@chromium.org <thestig@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-24 01:29:09 +0000
commit38a0e3c7681bdc6bd74d8b80a0aea68c264f418f (patch)
treed03a734c6d89d89ce9aa007766a64c4ffe2be98e /tools
parent8fc6448e485d7702b7c21ca1dfc285cf868711a7 (diff)
downloadchromium_src-38a0e3c7681bdc6bd74d8b80a0aea68c264f418f.zip
chromium_src-38a0e3c7681bdc6bd74d8b80a0aea68c264f418f.tar.gz
chromium_src-38a0e3c7681bdc6bd74d8b80a0aea68c264f418f.tar.bz2
Heapchecker: Add presubmit checks for suppressions.
BUG=none TEST=none Review URL: http://codereview.chromium.org/3197014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@57132 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools')
-rwxr-xr-xtools/heapcheck/PRESUBMIT.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/tools/heapcheck/PRESUBMIT.py b/tools/heapcheck/PRESUBMIT.py
new file mode 100755
index 0000000..415400c
--- /dev/null
+++ b/tools/heapcheck/PRESUBMIT.py
@@ -0,0 +1,43 @@
+# Copyright (c) 2010 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.
+
+"""
+See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
+for more details on the presubmit API built into gcl.
+"""
+
+def CheckChange(input_api, output_api):
+ """Checks the memcheck suppressions files for bad data."""
+ errors = []
+ skip_next_line = False
+ func_re = input_api.re.compile('[a-z_.]+\(.+\)$')
+ for f, line_num, line in input_api.RightHandSideLines(lambda x:
+ x.LocalPath().endswith('.txt')):
+ line = line.lstrip()
+ if line.startswith('#') or not line:
+ continue
+
+ if skip_next_line:
+ skip_next_line = False
+ continue
+ if line == '{':
+ skip_next_line = True
+ continue
+ if (line.startswith('fun:') or line.startswith('obj:') or
+ line == 'Heapcheck:Leak' or line == '}' or
+ line == '...'):
+ continue
+ if func_re.match(line):
+ continue
+ errors.append('"%s" is probably wrong: %s line %s' % (line, f.LocalPath(),
+ line_num))
+ if errors:
+ return [output_api.PresubmitError('\n'.join(errors))]
+ return []
+
+def CheckChangeOnUpload(input_api, output_api):
+ return CheckChange(input_api, output_api)
+
+def CheckChangeOnCommit(input_api, output_api):
+ return CheckChange(input_api, output_api)