#!/usr/bin/env vpython3 # Copyright (c) 2026 The WebRTC project authors. All Rights Reserved. # # Use of this source code is governed by a BSD-style license # that can be found in the LICENSE file in the root of the source # tree. An additional intellectual property rights grant can be found # in the file PATENTS. All contributing project authors may # be found in the AUTHORS file in the root of the source tree. """Verifies that rtc_test_suite targets contribute 'rtc_cc_test' metadata. This ensures that rtc_test_suite aggregates valid rtc_cc_test targets. """ import json import sys def main(): if len(sys.argv) != 3: print("Usage: verify_test_suite_metadata.py " "") return 1 map_path = sys.argv[1] output_stamp = sys.argv[2] try: with open(map_path, 'r', encoding='utf-8') as map_file: check_map = json.load(map_file) except Exception as error: print(f"Error reading input map file: {error}") return 1 missing_unittests = [] for item in check_map: label = item['label'] output_file = item['output'] # The output file contains the list of unittest metadata objects. try: with open(output_file, 'r', encoding='utf-8') as metadata_file: unittests = json.load(metadata_file) # Check if the target itself is an rtc_cc_test. is_valid = any(m.get('label') == label for m in unittests) if not is_valid: missing_unittests.append(label) except Exception as error: print( f"Error reading generated metadata file for {label}: {error}") return 1 if missing_unittests: lines = [ "Error: The following targets in rtc_test_suite are not " "rtc_cc_test targets:" ] for missing_test in sorted(missing_unittests): lines.append(f" {missing_test}") lines.append( "\nEnsure these targets are rtc_cc_test targets themselves.") print('\n'.join(lines)) return 1 with open(output_stamp, 'w', encoding='utf-8') as stamp_file: stamp_file.write("OK") return 0 if __name__ == '__main__': sys.exit(main())