#!/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()