コード例 #1
0
  def assert_trace_line_count(self, fn, count, filtering_enabled=True):
    trace_line_count = -1
    if filtering_enabled:
      traceback_utils.enable_traceback_filtering()
    else:
      traceback_utils.disable_traceback_filtering()
    self.assertEqual(
        traceback_utils.is_traceback_filtering_enabled(), filtering_enabled)
    try:
      fn()
    except Exception as e:  # pylint: disable=broad-except
      # We must count lines rather than frames because autograph transforms
      # stack frames into a single large string
      trace = '\n'.join(traceback.format_tb(e.__traceback__))
      trace_line_count = len(trace.split('\n'))

    self.assertGreater(trace_line_count, 0)

    if filtering_enabled:
      self.assertLess(trace_line_count, count)
    else:
      self.assertGreater(trace_line_count, count)
コード例 #2
0
    def get_message(self):
        """Returns the message for the underlying exception."""
        lines = []

        lines.append('in user code:')
        lines.append('')

        for frame_info in reversed(self.translated_stack):
            if (traceback_utils.is_traceback_filtering_enabled() and
                    not traceback_utils.include_frame(frame_info.filename)):
                continue

            # Same format with Python traceback.
            formatted_line = (
                f'    File "{frame_info.filename}", line '
                f'{frame_info.lineno}, in {frame_info.function_name}')
            if frame_info.is_converted:
                formatted_line += '  *'
            elif frame_info.is_allowlisted:
                formatted_line += '  **'
            lines.append(formatted_line)

            if frame_info.code is None:
                code_snippet = '<source unavailable>'
            else:
                code_snippet = frame_info.code.strip()
            lines.append('        {}'.format(code_snippet))

        lines.append('')

        message_lines = self.cause_message.split('\n')
        for i in range(len(message_lines)):
            message_lines[i] = '    ' + message_lines[i]
        lines.extend(message_lines)

        lines.append('')

        return '\n'.join(lines)
コード例 #3
0
def _get_thread_local_configuration_callable():
    if traceback_utils.is_traceback_filtering_enabled():
        thread_local_callables = {traceback_utils.enable_traceback_filtering}
    else:
        thread_local_callables = {traceback_utils.disable_traceback_filtering}
    return thread_local_callables