Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(66)

Side by Side Diff: appengine/findit/crash/test/callstack_test.py

Issue 2518663002: Converting various classes to namedtuples (Closed)
Patch Set: addressing nits Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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 common.dependency import Dependency
6 from crash.callstack import StackFrame, CallStack
7 from crash.test.stacktrace_test_suite import StacktraceTestSuite
8 from crash.type_enums import CallStackFormatType, CallStackLanguageType
9
10
11 class CallStackTest(StacktraceTestSuite):
12
13 def testStackFrameToString(self):
14 self.assertEqual(
15 StackFrame(0, 'src/', 'func', 'f.cc', 'src/f.cc', []).ToString(),
16 '#0 in func @ f.cc')
17 self.assertEqual(
18 StackFrame(0, 'src/', 'func', 'f.cc', 'src/f.cc', [1]).ToString(),
19 '#0 in func @ f.cc:1')
20 self.assertEqual(
21 StackFrame(0, 'src/', 'func', 'f.cc', 'src/f.cc', [1, 2]).ToString(),
22 '#0 in func @ f.cc:1:1')
23
24 def testBlameUrlForStackFrame(self):
25 frame = StackFrame(0, 'src/', 'func', 'f.cc', 'src/f.cc', [])
26 self.assertEqual(frame.BlameUrl('1'), None)
27
28 frame.repo_url = 'https://repo_url'
29 self.assertEqual(frame.BlameUrl('1'), 'https://repo_url/+blame/1/f.cc')
30
31 frame.crashed_line_numbers = [9, 10]
32 self.assertEqual(frame.BlameUrl('1'), 'https://repo_url/+blame/1/f.cc#9')
33
34 def testFrameListInitCallStack(self):
35 stack = CallStack(0)
36 stack.extend([StackFrame(0, 'src/', '', 'func', 'f.cc', [2])])
37
38 copy_stack = CallStack(stack.priority, frame_list=stack)
39 self._VerifyTwoCallStacksEqual(copy_stack, stack)
40
41 def testParseLineForJavaCallstackFormat(self):
42 stack = CallStack(0, CallStackFormatType.JAVA)
43
44 stack.ParseLine('dummy line', {})
45 self.assertEqual(stack, [])
46
47 deps = {'org/': Dependency('org/', 'https://repo', '1')}
48 stack.ParseLine(' at org.a.b(a.java:609)', deps)
49 self._VerifyTwoStackFramesEqual(
50 stack[0],
51 StackFrame(0, 'org/', 'org.a.b', 'a.java', 'org/a.java', [609]))
52
53 def testParseLineForSyzyasanCallstackFormat(self):
54 stack = CallStack(0, CallStackFormatType.SYZYASAN)
55
56 stack.ParseLine('dummy line', {})
57 self.assertEqual(stack, [])
58
59 deps = {'src/content/': Dependency('src/content/', 'https://repo', '1')}
60 stack.ParseLine('c::p::n [src/content/e.cc @ 165]', deps)
61 self._VerifyTwoStackFramesEqual(
62 stack[0],
63 StackFrame(
64 0, 'src/content/', 'c::p::n', 'e.cc', 'src/content/e.cc', [165]))
65
66 def testParseLineForDefaultCallstackFormat(self):
67 stack = CallStack(0, CallStackFormatType.DEFAULT)
68
69 stack.ParseLine('dummy line', {})
70 self.assertEqual(stack, [])
71
72 stack.ParseLine('#dummy line', {})
73 self.assertEqual(stack, [])
74
75 deps = {'tp/webrtc/': Dependency('tp/webrtc/', 'https://repo', '1')}
76 stack.ParseLine('#0 0x52617a in func0 tp/webrtc/a.c:38:3', deps)
77 self._VerifyTwoStackFramesEqual(
78 stack[0],
79 StackFrame(
80 0, 'tp/webrtc/', 'func0', 'a.c', 'tp/webrtc/a.c', [38, 39, 40, 41]))
81
82 stack.ParseLine('#1 0x526 in func::func2::func3 tp/webrtc/a.c:3:2', deps)
83 self._VerifyTwoStackFramesEqual(
84 stack[1],
85 StackFrame(
86 1, 'tp/webrtc/', 'func::func2::func3', 'a.c', 'tp/webrtc/a.c',
87 [3, 4, 5]))
88
89 def testParseLineForFracasJavaStack(self):
90 stack = CallStack(0, CallStackFormatType.DEFAULT,
91 CallStackLanguageType.JAVA)
92
93 stack.ParseLine('#0 0xxx in android.app.func app.java:2450', {})
94 self._VerifyTwoStackFramesEqual(
95 stack[0],
96 StackFrame(
97 0, '', 'android.app.func', 'android/app.java',
98 'android/app.java', [2450]))
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698