Index: tools/metrics/histograms/presubmit_bad_message_reasons.py |
diff --git a/tools/metrics/histograms/presubmit_bad_message_reasons.py b/tools/metrics/histograms/presubmit_bad_message_reasons.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0548607b15c85adf078fbde4dfaacb472386a25c |
--- /dev/null |
+++ b/tools/metrics/histograms/presubmit_bad_message_reasons.py |
@@ -0,0 +1,38 @@ |
+# Copyright 2017 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. |
+ |
+"""Check to see if the various BadMessage enums in histograms.xml need to be |
+updated. This can be called from a chromium PRESUBMIT.py to ensure updates to |
+bad_message.h also include the generated changes to histograms.xml |
+""" |
+ |
+import update_histogram_enum |
+ |
+def PrecheckBadMessage(input_api, output_api, histogram_name): |
+ source_path = '' |
+ |
+ # This function is called once per bad_message.h-containing directory. Check |
+ # for the |bad_message.h| file, and if present, remember its path. |
+ for f in input_api.AffectedFiles(): |
+ if f.LocalPath().endswith('bad_message.h'): |
+ source_path = f.LocalPath() |
+ break |
+ |
+ # If the |bad_message.h| wasn't found in this change, then there is nothing to |
+ # do and histogram.xml does not need to be updated. |
+ if source_path == '': |
+ return [] |
+ |
+ START_MARKER='^enum (class )?BadMessageReason {' |
+ END_MARKER='^BAD_MESSAGE_MAX' |
+ if update_histogram_enum.HistogramNeedsUpdate( |
+ histogram_enum_name=histogram_name, |
+ source_enum_path=source_path, |
+ start_marker=START_MARKER, |
+ end_marker=END_MARKER): |
+ return [output_api.PresubmitPromptWarning( |
+ 'bad_messages.h has been updated but histogram.xml does not ' |
+ 'appear to be updated.\nPlease run:\n' |
+ ' python tools/metrics/histograms/update_bad_message_reasons.py\n')] |
+ return [] |