[llvm] Make update_any_test_check.py script accepting @listfile CL argument. (PR #86800)

Valery Pykhtin via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 27 05:45:37 PDT 2024


https://github.com/vpykhtin created https://github.com/llvm/llvm-project/pull/86800

Usage: `update_any_test_check.py @my_list_of_tests`
where my_list_of_tests is a file containing list of tests to update.

Sorry for possible inefficiencies I'm a chatgpt powered python newbie.

>From 76653ab7846e08ab5baabd0b1a9d60f00785bb20 Mon Sep 17 00:00:00 2001
From: Valery Pykhtin <valery.pykhtin at gmail.com>
Date: Tue, 26 Mar 2024 18:24:58 +0100
Subject: [PATCH] Make update_any_test_check.py script accepting @listfile CL
 argument.

---
 llvm/utils/update_any_test_checks.py | 23 +++++++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

diff --git a/llvm/utils/update_any_test_checks.py b/llvm/utils/update_any_test_checks.py
index 2ad852d710c07a..da3290415245b1 100755
--- a/llvm/utils/update_any_test_checks.py
+++ b/llvm/utils/update_any_test_checks.py
@@ -4,7 +4,8 @@
 
 Given a list of test files, this script will invoke the correct
 update_test_checks-style script, skipping any tests which have not previously
-had assertions autogenerated.
+had assertions autogenerated. If test name starts with '@' it's treated as
+a name of file containing test list.
 """
 
 from __future__ import print_function
@@ -39,6 +40,22 @@ def run_utc_tool(utc_name, utc_tool, testname):
     )
     return (result.returncode, result.stdout, result.stderr)
 
+def read_arguments_from_file(filename):
+    try:
+        with open(filename, 'r') as file:
+            return [line.rstrip() for line in file.readlines()]
+    except FileNotFoundError:
+        print(f"Error: File '{filename}' not found.")
+        sys.exit(1)
+
+def expand_listfile_args(arg_list):
+    exp_arg_list = []
+    for arg in arg_list:
+        if arg.startswith('@'):
+            exp_arg_list += read_arguments_from_file(arg[1:])
+        else:
+            exp_arg_list.append(testname)
+    return exp_arg_list
 
 def main():
     from argparse import RawTextHelpFormatter
@@ -72,10 +89,12 @@ def main():
     utc_tools = {}
     have_error = False
 
+    tests = expand_listfile_args(config.tests)
+
     with ThreadPoolExecutor(max_workers=config.jobs) as executor:
         jobs = []
 
-        for testname in config.tests:
+        for testname in tests:
             with open(testname, "r") as f:
                 header = f.readline().strip()
                 m = RE_ASSERTIONS.search(header)



More information about the llvm-commits mailing list