| OLD | NEW |
| 1 # Copyright 2016 The Chromium Authors. All rights reserved. | 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 | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import textwrap | 5 import textwrap |
| 6 | 6 |
| 7 from common.dependency import Dependency | 7 from common.dependency import Dependency |
| 8 from crash.chromecrash_parser import ChromeCrashParser | 8 from crash.chromecrash_parser import ChromeCrashParser |
| 9 from crash.stacktrace import StackFrame | 9 from crash.stacktrace import StackFrame |
| 10 from crash.stacktrace import CallStack | 10 from crash.stacktrace import CallStack |
| 11 from crash.stacktrace import Stacktrace | 11 from crash.stacktrace import Stacktrace |
| 12 from crash.test.stacktrace_test_suite import StacktraceTestSuite | 12 from crash.test.stacktrace_test_suite import StacktraceTestSuite |
| 13 from crash.type_enums import CallStackFormatType | 13 from crash.type_enums import CallStackFormatType |
| 14 from crash.type_enums import LanguageType | 14 from crash.type_enums import LanguageType |
| 15 | 15 |
| 16 | 16 |
| 17 class ChromeCrashParserTest(StacktraceTestSuite): | 17 class ChromeCrashParserTest(StacktraceTestSuite): |
| 18 | 18 |
| 19 def testChromeCrashParserIsStartOfNewCallSTack(self): | |
| 20 parser = ChromeCrashParser() | |
| 21 self.assertEqual(parser._IsStartOfNewCallStack('dummy line'), | |
| 22 (False, None, None, None)) | |
| 23 self.assertEqual(parser._IsStartOfNewCallStack('CRASHED [EXC @ 0x508]'), | |
| 24 (True, 0, CallStackFormatType.DEFAULT, | |
| 25 LanguageType.CPP)) | |
| 26 | |
| 27 def testReturnEmptyStacktraceForEmptyString(self): | 19 def testReturnEmptyStacktraceForEmptyString(self): |
| 28 parser = ChromeCrashParser() | 20 parser = ChromeCrashParser() |
| 29 deps = {'src/': Dependency('src/', 'https://repo', '1')} | 21 deps = {'src/': Dependency('src/', 'https://repo', '1')} |
| 30 | 22 |
| 31 self.assertIsNone(parser.Parse('', deps)) | 23 self.assertIsNone(parser.Parse('', deps)) |
| 32 | 24 |
| 33 def testChromeCrashParserParseLineMalformatedCallstack(self): | 25 def testChromeCrashParserParseLineMalformatedCallstack(self): |
| 34 parser = ChromeCrashParser() | 26 parser = ChromeCrashParser() |
| 35 deps = {'src/': Dependency('src/', 'https://repo', '1')} | 27 deps = {'src/': Dependency('src/', 'https://repo', '1')} |
| 36 stacktrace_string = textwrap.dedent( | 28 stacktrace_string = textwrap.dedent( |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 StackFrame(1, 'src/', 'a::b::d(a* c)', 'f1.cc', 'src/f1.cc', [227])]) | 106 StackFrame(1, 'src/', 'a::b::d(a* c)', 'f1.cc', 'src/f1.cc', [227])]) |
| 115 expected_callstack1 = CallStack(0, frame_list=[ | 107 expected_callstack1 = CallStack(0, frame_list=[ |
| 116 StackFrame( | 108 StackFrame( |
| 117 0, 'src/', 'e::f::g(p* &d)', 'f.cc', 'src/f.cc', [20, 21, 22]), | 109 0, 'src/', 'e::f::g(p* &d)', 'f.cc', 'src/f.cc', [20, 21, 22]), |
| 118 StackFrame( | 110 StackFrame( |
| 119 1, 'src/', 'h::i::j(p* &d)', 'ff.cc', 'src/ff.cc', [9, 10])]) | 111 1, 'src/', 'h::i::j(p* &d)', 'ff.cc', 'src/ff.cc', [9, 10])]) |
| 120 | 112 |
| 121 expected_stacktrace = Stacktrace([expected_callstack0, expected_callstack1], | 113 expected_stacktrace = Stacktrace([expected_callstack0, expected_callstack1], |
| 122 expected_callstack0) | 114 expected_callstack0) |
| 123 self._VerifyTwoStacktracesEqual(stacktrace, expected_stacktrace) | 115 self._VerifyTwoStacktracesEqual(stacktrace, expected_stacktrace) |
| OLD | NEW |