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

Unified Diff: appengine/findit/crash/test/stacktrace_test.py

Issue 2562623004: Making CallStack immutable, so it can be hashable (Closed)
Patch Set: Addressing nits Created 4 years 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 side-by-side diff with in-line comments
Download patch
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)
« no previous file with comments | « appengine/findit/crash/test/project_classifier_test.py ('k') | appengine/findit/crash/test/stacktrace_test_suite.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698