67 lines
2.2 KiB
Python
67 lines
2.2 KiB
Python
|
#!/usr/bin/env python
|
||
|
# Copyright (c) 2013 The Chromium Authors. All rights reserved.
|
||
|
# Use of this source code is governed by a BSD-style license that can be
|
||
|
# found in the LICENSE file.
|
||
|
|
||
|
import cStringIO
|
||
|
import logging
|
||
|
import os
|
||
|
import sys
|
||
|
import textwrap
|
||
|
import unittest
|
||
|
|
||
|
ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
||
|
sys.path.insert(0, ROOT_DIR)
|
||
|
|
||
|
import reduce_debugline
|
||
|
|
||
|
|
||
|
class ReduceDebuglineTest(unittest.TestCase):
|
||
|
_DECODED_DEBUGLINE = textwrap.dedent("""\
|
||
|
Decoded dump of debug contents of section .debug_line:
|
||
|
|
||
|
CU: ../../chrome/service/service_main.cc:
|
||
|
File name Line number Starting address
|
||
|
service_main.cc 21 0xa41210
|
||
|
|
||
|
service_main.cc 24 0xa4141f
|
||
|
service_main.cc 30 0xa4142b
|
||
|
service_main.cc 31 0xa4143e
|
||
|
|
||
|
../../base/message_loop.h:
|
||
|
message_loop.h 550 0xa41300
|
||
|
|
||
|
message_loop.h 551 0xa41310
|
||
|
|
||
|
../../base/logging.h:
|
||
|
logging.h 246 0xa41710
|
||
|
|
||
|
logging.h 247 0xa41726
|
||
|
|
||
|
../../base/logging.h:
|
||
|
logging.h 846 0xa3fd90
|
||
|
|
||
|
logging.h 846 0xa3fda0
|
||
|
|
||
|
""")
|
||
|
|
||
|
_EXPECTED_REDUCED_DEBUGLINE = [
|
||
|
(0xa3fd90, '../../base/logging.h'),
|
||
|
(0xa41210, '../../chrome/service/service_main.cc'),
|
||
|
(0xa41300, '../../base/message_loop.h'),
|
||
|
(0xa4141f, '../../chrome/service/service_main.cc'),
|
||
|
(0xa41710, '../../base/logging.h'),
|
||
|
]
|
||
|
|
||
|
def test(self):
|
||
|
ranges_dict = reduce_debugline.reduce_decoded_debugline(
|
||
|
cStringIO.StringIO(self._DECODED_DEBUGLINE))
|
||
|
self.assertEqual(self._EXPECTED_REDUCED_DEBUGLINE, ranges_dict)
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
logging.basicConfig(
|
||
|
level=logging.DEBUG if '-v' in sys.argv else logging.ERROR,
|
||
|
format='%(levelname)5s %(filename)15s(%(lineno)3d): %(message)s')
|
||
|
unittest.main()
|