Index: tools/telemetry/telemetry/internal/util/exception_formatter.py |
diff --git a/tools/telemetry/telemetry/internal/util/exception_formatter.py b/tools/telemetry/telemetry/internal/util/exception_formatter.py |
deleted file mode 100644 |
index 5c3f86e738e74679b973870331916dc62a00069c..0000000000000000000000000000000000000000 |
--- a/tools/telemetry/telemetry/internal/util/exception_formatter.py |
+++ /dev/null |
@@ -1,107 +0,0 @@ |
-# Copyright 2014 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. |
- |
-"""Print prettier and more detailed exceptions.""" |
- |
-import logging |
-import math |
-import os |
-import sys |
-import traceback |
- |
-from telemetry.core import exceptions |
-from telemetry.core import util |
- |
- |
-def PrintFormattedException(exception_class=None, exception=None, tb=None, |
- msg=None): |
- logging.info('Try printing formatted exception: %s %s %s' % |
- (exception_class, exception, tb)) |
- assert bool(exception_class) == bool(exception) == bool(tb), ( |
- 'Must specify all or none of exception_class, exception, and tb') |
- |
- if not exception_class: |
- exception_class, exception, tb = sys.exc_info() |
- |
- if exception_class == exceptions.IntentionalException: |
- return |
- |
- def _GetFinalFrame(tb_level): |
- while tb_level.tb_next: |
- tb_level = tb_level.tb_next |
- return tb_level.tb_frame |
- |
- processed_tb = traceback.extract_tb(tb) |
- frame = _GetFinalFrame(tb) |
- exception_list = traceback.format_exception_only(exception_class, exception) |
- exception_string = '\n'.join(l.strip() for l in exception_list) |
- |
- if msg: |
- print >> sys.stderr |
- print >> sys.stderr, msg |
- |
- _PrintFormattedTrace(processed_tb, frame, exception_string) |
- |
- |
-def PrintFormattedFrame(frame, exception_string=None): |
- _PrintFormattedTrace(traceback.extract_stack(frame), frame, exception_string) |
- |
- |
-def _PrintFormattedTrace(processed_tb, frame, exception_string=None): |
- """Prints an Exception in a more useful format than the default. |
- |
- TODO(tonyg): Consider further enhancements. For instance: |
- - Report stacks to maintainers like depot_tools does. |
- - Add a debug flag to automatically start pdb upon exception. |
- """ |
- print >> sys.stderr |
- |
- # Format the traceback. |
- base_dir = os.path.abspath(util.GetChromiumSrcDir()) |
- print >> sys.stderr, 'Traceback (most recent call last):' |
- for filename, line, function, text in processed_tb: |
- filename = os.path.abspath(filename) |
- if filename.startswith(base_dir): |
- filename = filename[len(base_dir)+1:] |
- print >> sys.stderr, ' %s at %s:%d' % (function, filename, line) |
- print >> sys.stderr, ' %s' % text |
- |
- # Format the exception. |
- if exception_string: |
- print >> sys.stderr, exception_string |
- |
- # Format the locals. |
- local_variables = [(variable, value) for variable, value in |
- frame.f_locals.iteritems() if variable != 'self'] |
- print >> sys.stderr |
- print >> sys.stderr, 'Locals:' |
- if local_variables: |
- longest_variable = max(len(v) for v, _ in local_variables) |
- for variable, value in sorted(local_variables): |
- value = repr(value) |
- possibly_truncated_value = _AbbreviateMiddleOfString(value, ' ... ', 1024) |
- truncation_indication = '' |
- if len(possibly_truncated_value) != len(value): |
- truncation_indication = ' (truncated)' |
- print >> sys.stderr, ' %s: %s%s' % (variable.ljust(longest_variable + 1), |
- possibly_truncated_value, |
- truncation_indication) |
- else: |
- print >> sys.stderr, ' No locals!' |
- |
- print >> sys.stderr |
- sys.stderr.flush() |
- |
- |
-def _AbbreviateMiddleOfString(target, middle, max_length): |
- if max_length < 0: |
- raise ValueError('Must provide positive max_length') |
- if len(middle) > max_length: |
- raise ValueError('middle must not be greater than max_length') |
- |
- if len(target) <= max_length: |
- return target |
- half_length = (max_length - len(middle)) / 2. |
- return (target[:int(math.floor(half_length))] + middle + |
- target[-int(math.ceil(half_length)):]) |