1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
#!/usr/bin/env python3
#
# Copyright 2023 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import argparse
import os
import sys
REPOSITORY_ROOT = os.path.abspath(
os.path.join(os.path.dirname(__file__), os.pardir, os.pardir, os.pardir))
sys.path.insert(0, REPOSITORY_ROOT)
import build.android.gyp.util.build_utils as build_utils # pylint: disable=wrong-import-position
import components.cronet.tools.utils as cronet_utils # pylint: disable=wrong-import-position
# Set this environment variable in order to regenerate the golden text
# files.
_REBASELINE_PROGUARD = os.environ.get('REBASELINE_PROGUARD', '0') != '0'
def CompareGeneratedWithGolden(generated_file_path, golden_file_path):
golden_text = cronet_utils.read_file(golden_file_path)
generated_text = cronet_utils.read_file(generated_file_path)
if _REBASELINE_PROGUARD:
if golden_text != generated_text:
print('Updated', golden_file_path)
with open(golden_file_path, 'w') as f:
f.write(generated_text)
return None
if golden_text is None:
print(f'Golden file does not exist: {golden_file_path}')
return cronet_utils.compare_text_and_generate_diff(generated_text,
golden_text,
golden_file_path)
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--input_generated_file',
type=str,
help="Path to the generated file.")
parser.add_argument('--input_golden_file',
type=str,
help='Path to the input golden file.')
parser.add_argument('--target_name',
help='Target name that generates the golden file.')
parser.add_argument('--stamp', type=str, help='Path to touch on success')
args = parser.parse_args()
text_diff = CompareGeneratedWithGolden(args.input_generated_file,
args.input_golden_file)
if text_diff:
print(f"""
Cronet Proguard golden test failed. To generate it:
#######################################################
# #
# Run the command below to generate the file #
# #
#######################################################
########### START ###########
patch -p1 <<'END_DIFF'
{text_diff}
END_DIFF
############ END ############
If you wish to build the action locally in generation mode, See the instructions below:
#####################################################################
# #
# Run the command below to re-run the action in generation mode #
# #
#####################################################################
./components/cronet/tools/cr_cronet.py -d out/proguard_config gn && \
REBASELINE_PROGUARD=1 autoninja -C out/proguard_config \
{args.target_name}
This will generate a GN output directory with the appropriate GN\
flags to run the golden_test in generation mode rather than verification mode.
""")
sys.exit(-1)
else:
build_utils.Touch(args.stamp)
if __name__ == '__main__':
sys.exit(main())
|