summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
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)