[clang] [llvm] Revert "[Utils] Add new --update-tests flag to llvm-lit" (PR #110772)

via cfe-commits cfe-commits at lists.llvm.org
Tue Oct 1 17:15:21 PDT 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-testing-tools

Author: Henrik G. Olsson (hnrklssn)

<details>
<summary>Changes</summary>

Reverts llvm/llvm-project#<!-- -->108425

---
Full diff: https://github.com/llvm/llvm-project/pull/110772.diff


9 Files Affected:

- (modified) clang/test/lit.cfg.py (-10) 
- (modified) llvm/docs/CommandGuide/lit.rst (-5) 
- (modified) llvm/test/lit.cfg.py (-10) 
- (modified) llvm/utils/lit/lit/LitConfig.py (-3) 
- (modified) llvm/utils/lit/lit/TestRunner.py (-12) 
- (modified) llvm/utils/lit/lit/cl_arguments.py (-6) 
- (modified) llvm/utils/lit/lit/llvm/config.py (-5) 
- (modified) llvm/utils/lit/lit/main.py (-1) 
- (modified) llvm/utils/update_any_test_checks.py (+3-51) 


``````````diff
diff --git a/clang/test/lit.cfg.py b/clang/test/lit.cfg.py
index 32ed5239b90795..92a3361ce672e2 100644
--- a/clang/test/lit.cfg.py
+++ b/clang/test/lit.cfg.py
@@ -362,13 +362,3 @@ def calculate_arch_features(arch_string):
 # possibly be present in system and user configuration files, so disable
 # default configs for the test runs.
 config.environment["CLANG_NO_DEFAULT_CONFIG"] = "1"
-
-if lit_config.update_tests:
-    import sys
-    import os
-
-    utilspath = os.path.join(config.llvm_src_root, "utils")
-    sys.path.append(utilspath)
-    from update_any_test_checks import utc_lit_plugin
-
-    lit_config.test_updaters.append(utc_lit_plugin)
diff --git a/llvm/docs/CommandGuide/lit.rst b/llvm/docs/CommandGuide/lit.rst
index dadecef567b7c9..c9d5baba3e2f49 100644
--- a/llvm/docs/CommandGuide/lit.rst
+++ b/llvm/docs/CommandGuide/lit.rst
@@ -313,11 +313,6 @@ ADDITIONAL OPTIONS
 
  List all of the discovered tests and exit.
 
-.. option:: --update-tests
-
- Pass failing tests to functions in the ``lit_config.update_tests`` list to
- check whether any of them know how to update the test to make it pass.
-
 EXIT STATUS
 -----------
 
diff --git a/llvm/test/lit.cfg.py b/llvm/test/lit.cfg.py
index 1d5b2bcae1b766..5a03a85386e0aa 100644
--- a/llvm/test/lit.cfg.py
+++ b/llvm/test/lit.cfg.py
@@ -630,13 +630,3 @@ def have_ld64_plugin_support():
 
 if config.has_logf128:
     config.available_features.add("has_logf128")
-
-if lit_config.update_tests:
-    import sys
-    import os
-
-    utilspath = os.path.join(config.llvm_src_root, "utils")
-    sys.path.append(utilspath)
-    from update_any_test_checks import utc_lit_plugin
-
-    lit_config.test_updaters.append(utc_lit_plugin)
diff --git a/llvm/utils/lit/lit/LitConfig.py b/llvm/utils/lit/lit/LitConfig.py
index 198a2bf3172330..5dc712ae28370c 100644
--- a/llvm/utils/lit/lit/LitConfig.py
+++ b/llvm/utils/lit/lit/LitConfig.py
@@ -38,7 +38,6 @@ def __init__(
         parallelism_groups={},
         per_test_coverage=False,
         gtest_sharding=True,
-        update_tests=False,
     ):
         # The name of the test runner.
         self.progname = progname
@@ -90,8 +89,6 @@ def __init__(
         self.parallelism_groups = parallelism_groups
         self.per_test_coverage = per_test_coverage
         self.gtest_sharding = bool(gtest_sharding)
-        self.update_tests = update_tests
-        self.test_updaters = []
 
     @property
     def maxIndividualTestTime(self):
diff --git a/llvm/utils/lit/lit/TestRunner.py b/llvm/utils/lit/lit/TestRunner.py
index 3a2cdc5026b0c2..a1785073547ad0 100644
--- a/llvm/utils/lit/lit/TestRunner.py
+++ b/llvm/utils/lit/lit/TestRunner.py
@@ -1190,18 +1190,6 @@ def executeScriptInternal(
                 str(result.timeoutReached),
             )
 
-        if litConfig.update_tests:
-            for test_updater in litConfig.test_updaters:
-                try:
-                    update_output = test_updater(result, test)
-                except Exception as e:
-                    out += f"Exception occurred in test updater: {e}"
-                    continue
-                if update_output:
-                    for line in update_output.splitlines():
-                        out += f"# {line}\n"
-                    break
-
     return out, err, exitCode, timeoutInfo
 
 
diff --git a/llvm/utils/lit/lit/cl_arguments.py b/llvm/utils/lit/lit/cl_arguments.py
index dcbe553c6d4827..ed78256ee414b4 100644
--- a/llvm/utils/lit/lit/cl_arguments.py
+++ b/llvm/utils/lit/lit/cl_arguments.py
@@ -204,12 +204,6 @@ def parse_args():
         action="store_true",
         help="Exit with status zero even if some tests fail",
     )
-    execution_group.add_argument(
-        "--update-tests",
-        dest="update_tests",
-        action="store_true",
-        help="Try to update regression tests to reflect current behavior, if possible",
-    )
     execution_test_time_group = execution_group.add_mutually_exclusive_group()
     execution_test_time_group.add_argument(
         "--skip-test-time-recording",
diff --git a/llvm/utils/lit/lit/llvm/config.py b/llvm/utils/lit/lit/llvm/config.py
index c05ec1664d4c45..5f762ec7f3514a 100644
--- a/llvm/utils/lit/lit/llvm/config.py
+++ b/llvm/utils/lit/lit/llvm/config.py
@@ -64,17 +64,12 @@ def __init__(self, lit_config, config):
             self.with_environment("_TAG_REDIR_ERR", "TXT")
             self.with_environment("_CEE_RUNOPTS", "FILETAG(AUTOCVT,AUTOTAG) POSIX(ON)")
 
-        if lit_config.update_tests:
-            self.use_lit_shell = True
-
         # Choose between lit's internal shell pipeline runner and a real shell.
         # If LIT_USE_INTERNAL_SHELL is in the environment, we use that as an
         # override.
         lit_shell_env = os.environ.get("LIT_USE_INTERNAL_SHELL")
         if lit_shell_env:
             self.use_lit_shell = lit.util.pythonize_bool(lit_shell_env)
-            if not self.use_lit_shell and lit_config.update_tests:
-                print("note: --update-tests is not supported when using external shell")
 
         if not self.use_lit_shell:
             features.add("shell")
diff --git a/llvm/utils/lit/lit/main.py b/llvm/utils/lit/lit/main.py
index 745e376de7d529..24ba804f0c363f 100755
--- a/llvm/utils/lit/lit/main.py
+++ b/llvm/utils/lit/lit/main.py
@@ -42,7 +42,6 @@ def main(builtin_params={}):
         config_prefix=opts.configPrefix,
         per_test_coverage=opts.per_test_coverage,
         gtest_sharding=opts.gtest_sharding,
-        update_tests=opts.update_tests,
     )
 
     discovered_tests = lit.discovery.find_tests_for_inputs(
diff --git a/llvm/utils/update_any_test_checks.py b/llvm/utils/update_any_test_checks.py
index 76fe3365939290..e8eef1a46c504f 100755
--- a/llvm/utils/update_any_test_checks.py
+++ b/llvm/utils/update_any_test_checks.py
@@ -34,12 +34,9 @@ def find_utc_tool(search_path, utc_name):
     return None
 
 
-def run_utc_tool(utc_name, utc_tool, testname, environment):
+def run_utc_tool(utc_name, utc_tool, testname):
     result = subprocess.run(
-        [utc_tool, testname],
-        stdout=subprocess.PIPE,
-        stderr=subprocess.PIPE,
-        env=environment,
+        [utc_tool, testname], stdout=subprocess.PIPE, stderr=subprocess.PIPE
     )
     return (result.returncode, result.stdout, result.stderr)
 
@@ -63,42 +60,6 @@ def expand_listfile_args(arg_list):
     return exp_arg_list
 
 
-def utc_lit_plugin(result, test):
-    testname = test.getFilePath()
-    if not testname:
-        return None
-
-    script_name = os.path.abspath(__file__)
-    utc_search_path = os.path.join(os.path.dirname(script_name), os.path.pardir)
-
-    with open(testname, "r") as f:
-        header = f.readline().strip()
-
-    m = RE_ASSERTIONS.search(header)
-    if m is None:
-        return None
-
-    utc_name = m.group(1)
-    utc_tool = find_utc_tool([utc_search_path], utc_name)
-    if not utc_tool:
-        return f"update-utc-tests: {utc_name} not found"
-
-    return_code, stdout, stderr = run_utc_tool(
-        utc_name, utc_tool, testname, test.config.environment
-    )
-
-    stderr = stderr.decode(errors="replace")
-    if return_code != 0:
-        if stderr:
-            return f"update-utc-tests: {utc_name} exited with return code {return_code}\n{stderr.rstrip()}"
-        return f"update-utc-tests: {utc_name} exited with return code {return_code}"
-
-    stdout = stdout.decode(errors="replace")
-    if stdout:
-        return f"update-utc-tests: updated {testname}\n{stdout.rstrip()}"
-    return f"update-utc-tests: updated {testname}"
-
-
 def main():
     from argparse import RawTextHelpFormatter
 
@@ -117,11 +78,6 @@ def main():
         nargs="*",
         help="Additional directories to scan for update_*_test_checks scripts",
     )
-    parser.add_argument(
-        "--path",
-        help="""Additional directories to scan for executables invoked by the update_*_test_checks scripts,
-separated by the platform path separator""",
-    )
     parser.add_argument("tests", nargs="+")
     config = parser.parse_args()
 
@@ -132,10 +88,6 @@ def main():
     script_name = os.path.abspath(__file__)
     utc_search_path.append(os.path.join(os.path.dirname(script_name), os.path.pardir))
 
-    local_env = os.environ.copy()
-    if config.path:
-        local_env["PATH"] = config.path + os.pathsep + local_env["PATH"]
-
     not_autogenerated = []
     utc_tools = {}
     have_error = False
@@ -165,7 +117,7 @@ def main():
                         continue
 
                 future = executor.submit(
-                    run_utc_tool, utc_name, utc_tools[utc_name], testname, local_env
+                    run_utc_tool, utc_name, utc_tools[utc_name], testname
                 )
                 jobs.append((testname, future))
 

``````````

</details>


https://github.com/llvm/llvm-project/pull/110772


More information about the cfe-commits mailing list