1#!/usr/bin/env python3
2#
3# Copyright (C) 2021 The Android Open Source Project
4#
5# Licensed under the Apache License, Version 2.0 (the "License");
6# you may not use this file except in compliance with the License.
7# You may obtain a copy of the License at
8#
9#      http://www.apache.org/licenses/LICENSE-2.0
10#
11# Unless required by applicable law or agreed to in writing, software
12# distributed under the License is distributed on an "AS IS" BASIS,
13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14# See the License for the specific language governing permissions and
15# limitations under the License.
16
17import collections
18import json
19from typing import Any, Dict, List
20
21from . test_utils import INFERNO_SCRIPT, TestBase, TestHelper
22
23
24class TestInferno(TestBase):
25    def get_report(self, options: List[str]) -> str:
26        self.run_cmd([INFERNO_SCRIPT] + options)
27        with open('report.html', 'r') as fh:
28            return fh.read()
29
30    def test_proguard_mapping_file(self):
31        """ Test --proguard-mapping-file option. """
32        testdata_file = TestHelper.testdata_path('perf_need_proguard_mapping.data')
33        proguard_mapping_file = TestHelper.testdata_path('proguard_mapping.txt')
34        original_methodname = 'androidx.fragment.app.FragmentActivity.startActivityForResult'
35        # Can't show original method name without proguard mapping file.
36        self.assertNotIn(original_methodname, self.get_report(
37            ['--record_file', testdata_file, '-sc']))
38        # Show original method name with proguard mapping file.
39        self.assertIn(original_methodname, self.get_report(
40            ['--record_file', testdata_file, '-sc', '--proguard-mapping-file', proguard_mapping_file]))
41