Пример #1
0
 def test_indirect_before_direct_leak(self):
     """Test highlighting when indirect leak precedes first direct leak."""
     data = self._read_test_data('indirect_before_direct_leak.txt')
     actual_data = leak_blacklist.highlight_first_direct_leak(data)
     expected_data = self._read_test_data(
         'indirect_before_direct_leak_highlighted.txt')
     self.assertEqual(expected_data, actual_data)
Пример #2
0
def filter_stacktrace(crash_stacktrace, crash_type, stack_clean_regex_lines,
                      revisions_dict):
  """Clean up and format a stack trace for display."""
  if not crash_stacktrace:
    return ''

  # Get stacktrace clean regex for filtering strings and even full lines.
  stack_clean_regex_list = filter(bool, stack_clean_regex_lines.splitlines())
  stack_clean_regex = (
      re.compile('(%s)' % '|'.join(stack_clean_regex_list))
      if stack_clean_regex_list else None)

  filtered_crash_lines = []
  for line in crash_stacktrace.splitlines():
    # Null out matched string from stacktrace clean regex.
    if stack_clean_regex:
      line = stack_clean_regex.sub('', line)
      if not line:
        continue

    # Html escape line content to prevent XSS.
    line = cgi.escape(line, quote=True)

    line = source_mapper.linkify_stack_frame(line, revisions_dict)

    filtered_crash_lines.append(line)

  filtered_crash_stacktrace = '\n'.join(filtered_crash_lines)

  if crash_type == leak_blacklist.DIRECT_LEAK_LABEL:
    return leak_blacklist.highlight_first_direct_leak(filtered_crash_stacktrace)

  return highlight_common_stack_frames(filtered_crash_stacktrace)
Пример #3
0
def filter_stacktrace(crash_stacktrace, crash_type, revisions_dict):
  """Clean up and format a stack trace for display."""
  if not crash_stacktrace:
    return ''

  filtered_crash_lines = []
  for line in crash_stacktrace.splitlines():
    # Html escape line content to prevent XSS.
    line = cgi.escape(line, quote=True)

    line = source_mapper.linkify_stack_frame(line, revisions_dict)

    filtered_crash_lines.append(line)

  filtered_crash_stacktrace = '\n'.join(filtered_crash_lines)

  if crash_type == leak_blacklist.DIRECT_LEAK_LABEL:
    return leak_blacklist.highlight_first_direct_leak(filtered_crash_stacktrace)

  return highlight_common_stack_frames(filtered_crash_stacktrace)
Пример #4
0
def filter_stacktrace(crash_stacktrace, crash_type, revisions_dict, platform,
                      job_type):
    """Clean up and format a stack trace for display."""
    if not crash_stacktrace:
        return ''

    filtered_crash_lines = []
    for line in crash_stacktrace.splitlines():
        # Html escape line content to prevent XSS.
        line = html.escape(line, quote=True)
        line = source_mapper.linkify_stack_frame(line, revisions_dict)

        if 'android' in platform or environment.is_lkl_job(job_type):
            line = _linkify_android_kernel_stack_frame_if_needed(line)

        filtered_crash_lines.append(line)

    filtered_crash_stacktrace = '\n'.join(filtered_crash_lines)

    if crash_type == leak_blacklist.DIRECT_LEAK_LABEL:
        return leak_blacklist.highlight_first_direct_leak(
            filtered_crash_stacktrace)

    return highlight_common_stack_frames(filtered_crash_stacktrace)
Пример #5
0
 def test_multi_direct_leaks(self):
     """Test highlighting for report with multiple direct leaks."""
     data = self._read_test_data('multi_direct_leak.txt')
     actual_data = leak_blacklist.highlight_first_direct_leak(data)
     expected_data = self._read_test_data('multi_direct_leak_expected.txt')
     self.assertEqual(expected_data, actual_data)
Пример #6
0
 def test_single_leak(self):
     """Test highlighting for report with single direct leak."""
     data = self._read_test_data('single_direct_leak.txt')
     actual_data = leak_blacklist.highlight_first_direct_leak(data)
     expected_data = data
     self.assertEqual(expected_data, actual_data)