You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
68 lines
1.6 KiB
68 lines
1.6 KiB
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
# Copyright 2019 The Chromium OS Authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
"""Tests for remove_indirect_calls"""
|
|
|
|
from __future__ import print_function
|
|
|
|
import io
|
|
import unittest
|
|
|
|
from afdo_redaction import remove_indirect_calls
|
|
|
|
|
|
def _run_test(input_lines):
|
|
input_buf = io.StringIO('\n'.join(input_lines))
|
|
output_buf = io.StringIO()
|
|
remove_indirect_calls.run(input_buf, output_buf)
|
|
return output_buf.getvalue().splitlines()
|
|
|
|
|
|
class Test(unittest.TestCase):
|
|
"""Tests"""
|
|
|
|
def test_empty_profile(self):
|
|
self.assertEqual(_run_test([]), [])
|
|
|
|
def test_removal_on_real_world_code(self):
|
|
# These are copied from an actual textual AFDO profile, but the names made
|
|
# lints unhappy due to their length, so I had to be creative.
|
|
profile_lines = """_ZLongSymbolName:52862:1766
|
|
14: 2483
|
|
8.1: _SomeInlinedSym:45413
|
|
11: _AndAnother:35481
|
|
2: 2483
|
|
2.1: _YetAnother:25549
|
|
3: 2483
|
|
3.1: 351
|
|
3.3: 2526 IndirectTarg1:675 Targ2:397 Targ3:77
|
|
13.2: Whee:9932
|
|
1.1: Whoo:9932
|
|
0: BleepBloop:9932
|
|
0: 2483
|
|
""".strip().splitlines()
|
|
|
|
expected_lines = """_ZLongSymbolName:52862:1766
|
|
14: 2483
|
|
8.1: _SomeInlinedSym:45413
|
|
11: _AndAnother:35481
|
|
2: 2483
|
|
2.1: _YetAnother:25549
|
|
3: 2483
|
|
3.1: 351
|
|
3.3: 2526
|
|
13.2: Whee:9932
|
|
1.1: Whoo:9932
|
|
0: BleepBloop:9932
|
|
0: 2483
|
|
""".strip().splitlines()
|
|
|
|
self.assertEqual(_run_test(profile_lines), expected_lines)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|