#!/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()