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.
63 lines
2.4 KiB
63 lines
2.4 KiB
#!/usr/bin/env/python
|
|
# Copyright 2020 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.
|
|
"""This script merges code coverage profiles from multiple steps.
|
|
|
|
This script is taken from the chromium build tools and is synced
|
|
manually on an as-needed basis:
|
|
https://source.chromium.org/chromium/chromium/src/+/master:testing/merge_scripts/code_coverage/merge_steps.py?q=merge_steps.py&ss=chromium
|
|
"""
|
|
|
|
import argparse
|
|
import os
|
|
import sys
|
|
|
|
import merge_lib as merger
|
|
|
|
|
|
def _merge_steps_argument_parser(*args, **kwargs):
|
|
parser = argparse.ArgumentParser(*args, **kwargs)
|
|
parser.add_argument('--input-dir', required=True, help=argparse.SUPPRESS)
|
|
parser.add_argument(
|
|
'--output-file', required=True, help='where to store the merged data')
|
|
parser.add_argument(
|
|
'--llvm-profdata', required=True, help='path to llvm-profdata executable')
|
|
parser.add_argument(
|
|
'--profdata-filename-pattern',
|
|
default='.*',
|
|
help='regex pattern of profdata filename to merge for current test type. '
|
|
'If not present, all profdata files will be merged.')
|
|
# TODO(crbug.com/1077304) - migrate this to sparse=False as default, and have
|
|
# --sparse to set sparse
|
|
parser.add_argument(
|
|
'--no-sparse',
|
|
action='store_false',
|
|
dest='sparse',
|
|
help='run llvm-profdata without the sparse flag.')
|
|
# TODO(crbug.com/1077304) - The intended behaviour is to default sparse to
|
|
# false. --no-sparse above was added as a workaround, and will be removed.
|
|
# This is being introduced now in support of the migration to intended
|
|
# behavior. Ordering of args matters here, as the default is set by the former
|
|
# (sparse defaults to False because of ordering. See merge_results unit tests
|
|
# for details)
|
|
parser.add_argument(
|
|
'--sparse',
|
|
action='store_true',
|
|
dest='sparse',
|
|
help='run llvm-profdata with the sparse flag.')
|
|
return parser
|
|
|
|
|
|
def main():
|
|
desc = "Merge profdata files in <--input-dir> into a single profdata."
|
|
parser = _merge_steps_argument_parser(description=desc)
|
|
params = parser.parse_args()
|
|
merger.merge_profiles(params.input_dir, params.output_file, '.profdata',
|
|
params.llvm_profdata, params.profdata_filename_pattern,
|
|
sparse=params.sparse)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main())
|