| #!/usr/bin/env python3 |
| # Copyright 2024 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 csv |
| import json |
| import pathlib |
| |
| |
| def main(): |
| parser = argparse.ArgumentParser( |
| description= |
| 'Lists annotated disabled tests from the output of get_test_health.py,' |
| ' outputs a .csv.') |
| parser.add_argument('get_test_health_jsonl_path', |
| type=pathlib.Path, |
| help='input jsonl generated by get_test_health.py') |
| parser.add_argument('-o', |
| '--output-file', |
| type=pathlib.Path, |
| required=True, |
| help='output CSV file path') |
| args = parser.parse_args() |
| |
| lines = args.get_test_health_jsonl_path.read_text().splitlines() |
| java_file_dicts = [json.loads(line) for line in lines] |
| |
| all_disabled_tests = set() |
| all_disable_if_tests = set() |
| for java_file_dict in java_file_dicts: |
| for disabled_test in java_file_dict['disabled_tests']: |
| if disabled_test in all_disabled_tests: |
| raise ValueError( |
| f'Multiple @DisabledTest entries for {disabled_test}') |
| all_disabled_tests.add(disabled_test) |
| for disabled_test in java_file_dict['disable_if_tests']: |
| if disabled_test in all_disable_if_tests: |
| raise ValueError( |
| f'Multiple @DisableIf entries for {disabled_test}') |
| all_disable_if_tests.add(disabled_test) |
| |
| all_disabled_tests_list = sorted(all_disabled_tests) |
| all_disable_if_tests_list = sorted(all_disable_if_tests) |
| |
| with open(args.output_file, 'w') as csv_output_file: |
| csv_writer = csv.writer(csv_output_file) |
| |
| for disabled_test in all_disabled_tests_list: |
| csv_writer.writerow(['@DisabledTest', disabled_test]) |
| for disabled_test in all_disable_if_tests_list: |
| csv_writer.writerow(['@DisableIf', disabled_test]) |
| |
| |
| if __name__ == '__main__': |
| main() |