| Index: appengine/findit/crash/test/stacktrace_test.py
|
| diff --git a/appengine/findit/crash/test/stacktrace_test.py b/appengine/findit/crash/test/stacktrace_test.py
|
| index f0a5ace6fa66b612615efa5205101f5f3da021bb..56f998f76b426eb88772b807413cd0bb86e6a881 100644
|
| --- a/appengine/findit/crash/test/stacktrace_test.py
|
| +++ b/appengine/findit/crash/test/stacktrace_test.py
|
| @@ -3,8 +3,8 @@
|
| # found in the LICENSE file.
|
|
|
| from common.dependency import Dependency
|
| -from crash.stacktrace import StackFrame
|
| from crash.stacktrace import CallStack
|
| +from crash.stacktrace import StackFrame
|
| from crash.stacktrace import Stacktrace
|
| from crash.test.stacktrace_test_suite import StacktraceTestSuite
|
| from crash.type_enums import CallStackFormatType
|
| @@ -12,6 +12,30 @@ from crash.type_enums import CallStackLanguageType
|
|
|
| class CallStackTest(StacktraceTestSuite):
|
|
|
| + def testCallStackBool(self):
|
| + self.assertFalse(CallStack(0))
|
| + frame = StackFrame(0, 'src/', 'func', 'f.cc', 'src/f.cc', [])
|
| + self.assertTrue(CallStack(0, frame_list=[frame]))
|
| +
|
| + def testCallStackSliceFrames(self):
|
| + frames = [
|
| + StackFrame(0, 'src/', 'func0', 'file0.cc', 'src/file0.cc', [32]),
|
| + StackFrame(1, 'src/', 'func1', 'file1.cc', 'src/file1.cc', [53]),
|
| + StackFrame(2, 'src/', 'func2', 'file2.cc', 'src/file2.cc', [3])]
|
| +
|
| + self._VerifyTwoCallStacksEqual(
|
| + CallStack(0, frame_list=frames[2:2]),
|
| + CallStack(0, frame_list=frames).SliceFrames(2, 2))
|
| + self._VerifyTwoCallStacksEqual(
|
| + CallStack(0, frame_list=frames[:2]),
|
| + CallStack(0, frame_list=frames).SliceFrames(None, 2))
|
| + self._VerifyTwoCallStacksEqual(
|
| + CallStack(0, frame_list=frames[2:]),
|
| + CallStack(0, frame_list=frames).SliceFrames(2, None))
|
| + self._VerifyTwoCallStacksEqual(
|
| + CallStack(0, frame_list=frames[:]),
|
| + CallStack(0, frame_list=frames).SliceFrames(None, None))
|
| +
|
| def testStackFrameToString(self):
|
| self.assertEqual(
|
| StackFrame(0, 'src/', 'func', 'f.cc', 'src/f.cc', []).ToString(),
|
| @@ -33,68 +57,68 @@ class CallStackTest(StacktraceTestSuite):
|
| frame = frame._replace(crashed_line_numbers = [9, 10])
|
| self.assertEqual(frame.BlameUrl('1'), 'https://repo_url/+blame/1/f.cc#9')
|
|
|
| - def testFrameListInitCallStack(self):
|
| - stack = CallStack(0)
|
| - stack.extend([StackFrame(0, 'src/', '', 'func', 'f.cc', [2])])
|
| -
|
| - copy_stack = CallStack(stack.priority, frame_list=stack)
|
| - self._VerifyTwoCallStacksEqual(copy_stack, stack)
|
| -
|
| - def testParseLineForJavaCallstackFormat(self):
|
| - stack = CallStack(0, CallStackFormatType.JAVA)
|
| + def testCallStackConstructorIsLanguageJavaIfFormatJava(self):
|
| + self.assertEqual(
|
| + CallStack(0, format_type = CallStackFormatType.JAVA).language_type,
|
| + CallStackLanguageType.JAVA)
|
|
|
| - stack.ParseLine('dummy line', {})
|
| - self.assertEqual(stack, [])
|
| + def testParseStackFrameForJavaCallstackFormat(self):
|
| + language_type = None
|
| + format_type = CallStackFormatType.JAVA
|
| + self.assertIsNone(
|
| + StackFrame.Parse(language_type, format_type, 'dummy line', {}))
|
|
|
| deps = {'org/': Dependency('org/', 'https://repo', '1')}
|
| - stack.ParseLine(' at org.a.b(a.java:609)', deps)
|
| + frame = StackFrame.Parse(language_type, format_type,
|
| + ' at org.a.b(a.java:609)', deps)
|
| self._VerifyTwoStackFramesEqual(
|
| - stack[0],
|
| + frame,
|
| StackFrame(0, 'org/', 'org.a.b', 'a.java', 'org/a.java', [609]))
|
|
|
| - def testParseLineForSyzyasanCallstackFormat(self):
|
| - stack = CallStack(0, CallStackFormatType.SYZYASAN)
|
| -
|
| - stack.ParseLine('dummy line', {})
|
| - self.assertEqual(stack, [])
|
| + def testParseStackFrameForSyzyasanCallstackFormat(self):
|
| + language_type = None
|
| + format_type = CallStackFormatType.SYZYASAN
|
| + self.assertIsNone(
|
| + StackFrame.Parse(language_type, format_type, 'dummy line', {}))
|
|
|
| deps = {'src/content/': Dependency('src/content/', 'https://repo', '1')}
|
| - stack.ParseLine('c::p::n [src/content/e.cc @ 165]', deps)
|
| + frame = StackFrame.Parse(language_type, format_type,
|
| + 'c::p::n [src/content/e.cc @ 165]', deps)
|
| self._VerifyTwoStackFramesEqual(
|
| - stack[0],
|
| + frame,
|
| StackFrame(
|
| 0, 'src/content/', 'c::p::n', 'e.cc', 'src/content/e.cc', [165]))
|
|
|
| - def testParseLineForDefaultCallstackFormat(self):
|
| - stack = CallStack(0, CallStackFormatType.DEFAULT)
|
| -
|
| - stack.ParseLine('dummy line', {})
|
| - self.assertEqual(stack, [])
|
| -
|
| - stack.ParseLine('#dummy line', {})
|
| - self.assertEqual(stack, [])
|
| + def testParseStackFrameForDefaultCallstackFormat(self):
|
| + language_type = None
|
| + format_type = CallStackFormatType.DEFAULT
|
| + self.assertIsNone(
|
| + StackFrame.Parse(language_type, format_type, 'dummy line', {}))
|
|
|
| deps = {'tp/webrtc/': Dependency('tp/webrtc/', 'https://repo', '1')}
|
| - stack.ParseLine('#0 0x52617a in func0 tp/webrtc/a.c:38:3', deps)
|
| + frame = StackFrame.Parse(language_type, format_type,
|
| + '#0 0x52617a in func0 tp/webrtc/a.c:38:3', deps)
|
| self._VerifyTwoStackFramesEqual(
|
| - stack[0],
|
| + frame,
|
| StackFrame(
|
| 0, 'tp/webrtc/', 'func0', 'a.c', 'tp/webrtc/a.c', [38, 39, 40, 41]))
|
|
|
| - stack.ParseLine('#1 0x526 in func::func2::func3 tp/webrtc/a.c:3:2', deps)
|
| + frame = StackFrame.Parse(language_type, format_type,
|
| + '#1 0x526 in func::func2::func3 tp/webrtc/a.c:3:2', deps)
|
| self._VerifyTwoStackFramesEqual(
|
| - stack[1],
|
| + frame,
|
| StackFrame(
|
| 1, 'tp/webrtc/', 'func::func2::func3', 'a.c', 'tp/webrtc/a.c',
|
| [3, 4, 5]))
|
|
|
| - def testParseLineForFracasJavaStack(self):
|
| - stack = CallStack(0, CallStackFormatType.DEFAULT,
|
| - CallStackLanguageType.JAVA)
|
| + def testParseStackFrameForFracasJavaStack(self):
|
| + format_type = CallStackFormatType.DEFAULT
|
| + language_type = CallStackLanguageType.JAVA
|
|
|
| - stack.ParseLine('#0 0xxx in android.app.func app.java:2450', {})
|
| + frame = StackFrame.Parse(language_type, format_type,
|
| + '#0 0xxx in android.app.func app.java:2450', {})
|
| self._VerifyTwoStackFramesEqual(
|
| - stack[0],
|
| + frame,
|
| StackFrame(
|
| 0, '', 'android.app.func', 'android/app.java',
|
| 'android/app.java', [2450]))
|
| @@ -160,13 +184,12 @@ class StacktraceTest(StacktraceTestSuite):
|
| self.assertEqual(stacktrace.crash_stack, None)
|
|
|
| callstack_list = [CallStack(0), CallStack(1)]
|
| - stacktrace.extend(callstack_list)
|
| + stacktrace = Stacktrace(stack_list=callstack_list)
|
|
|
| self._VerifyTwoCallStacksEqual(stacktrace.crash_stack,
|
| callstack_list[0])
|
|
|
| def testInitStacktaceByCopyAnother(self):
|
| - stack_trace = Stacktrace()
|
| - stack_trace.extend([CallStack(0), CallStack(1)])
|
| + stack_trace = Stacktrace(stack_list=[CallStack(0), CallStack(1)])
|
|
|
| self._VerifyTwoStacktracesEqual(Stacktrace(stack_trace), stack_trace)
|
|
|