| OLD | NEW |
| (Empty) |
| 1 # Copyright 2016 The Chromium Authors. All rights reserved. | |
| 2 # Use of this source code is governed by a BSD-style license that can be | |
| 3 # found in the LICENSE file. | |
| 4 | |
| 5 from crash import callstack_filters | |
| 6 from crash.stacktrace import CallStackBuffer | |
| 7 from crash.stacktrace import StackFrame | |
| 8 from crash.stacktrace_parser import StacktraceParser | |
| 9 from crash.test.stacktrace_test_suite import StacktraceTestSuite | |
| 10 | |
| 11 | |
| 12 class DummyFilter(callstack_filters.CallStackFilter): | |
| 13 | |
| 14 def __call__(self, stack_buffer): # pragma: no cover | |
| 15 return stack_buffer | |
| 16 | |
| 17 | |
| 18 class StacktraceParserTest(StacktraceTestSuite): | |
| 19 | |
| 20 def testFilterInfinityPriorityStackBuffer(self): | |
| 21 """Tests ``FilterStackBuffer`` return None for inf priority stack buffer.""" | |
| 22 stack_buffer = CallStackBuffer(priority=float('inf')) | |
| 23 self.assertIsNone(StacktraceParser.FilterStackBuffer(stack_buffer, | |
| 24 [DummyFilter()])) | |
| 25 | |
| 26 def testFilterEmptyStackBuffer(self): | |
| 27 """Tests ``FilterStackBuffer`` return None for empty stack buffer.""" | |
| 28 stack_buffer = CallStackBuffer(frame_list=[]) | |
| 29 self.assertIsNone(StacktraceParser.FilterStackBuffer(stack_buffer, | |
| 30 [DummyFilter()])) | |
| 31 | |
| 32 def testFilterAllFrames(self): | |
| 33 """Tests ``FilterStackBuffer`` filters all frames and resturn None.""" | |
| 34 frame_list = [ | |
| 35 StackFrame(0, 'src/', 'func', 'file0.cc', 'src/file0.cc', [32]), | |
| 36 StackFrame(0, 'src/', 'func2', 'file0.cc', 'src/file0.cc', [32])] | |
| 37 stack_buffer = CallStackBuffer(0, frame_list=frame_list) | |
| 38 | |
| 39 def _MockFilter(stack_buffer): | |
| 40 stack_buffer.frames = None | |
| 41 return stack_buffer | |
| 42 | |
| 43 self.assertIsNone(StacktraceParser.FilterStackBuffer( | |
| 44 stack_buffer, | |
| 45 filters=[_MockFilter])) | |
| 46 | |
| 47 def testFilterSomeFrames(self): | |
| 48 """Tests ``FilterStackBuffer`` filters some frames.""" | |
| 49 frame_list = [ | |
| 50 StackFrame(0, 'src/', 'func', 'file0.cc', 'src/file0.cc', [32]), | |
| 51 StackFrame(0, 'src/', 'func2', 'file0.cc', 'src/file0.cc', [32])] | |
| 52 stack_buffer = CallStackBuffer(0, frame_list=frame_list) | |
| 53 | |
| 54 def _MockFilter(stack): | |
| 55 stack.frames = stack.frames[:1] | |
| 56 return stack | |
| 57 | |
| 58 self._VerifyTwoCallStacksEqual( | |
| 59 StacktraceParser.FilterStackBuffer(stack_buffer, filters=[_MockFilter]), | |
| 60 CallStackBuffer(stack_buffer.priority, frame_list=frame_list[:1])) | |
| OLD | NEW |