[clang] [clang-tools-extra] [compiler-rt] [flang] [libcxx] [libcxxabi] [libunwind] [lld] [lldb] [llvm] [mlir] [openmp] [polly] [utils] update how auto-updated tests are displayed when the test is retried (PR #181097)
Henrik G. Olsson via cfe-commits
cfe-commits at lists.llvm.org
Sat Feb 14 12:04:49 PST 2026
https://github.com/hnrklssn updated https://github.com/llvm/llvm-project/pull/181097
>From 8c7e7cd40c9cd12a0d37a1a3d4f115fba7c32d7a Mon Sep 17 00:00:00 2001
From: "Henrik G. Olsson" <h_olsson at apple.com>
Date: Wed, 11 Feb 2026 21:38:47 -0800
Subject: [PATCH 01/18] [utils] show output from all test updates for tests
with retries
This moves the test updater output from the test output to its own
section, to provide clearer info when tests are retried. Updates with
retries had two UX problems:
- if a test is retried and fails multiple times, only the last test
output is shown, but the test may be updated on each failure.
- if a test fails, is updated, and then passes, the test output is not
shown unless the `--test-output all` option is set.
Even with test updater output hoisted out from the test output, it is
still only printed when the test result is printed. If
`--print-result-after failed` is set, and the test passes after being
updated, it is marked FLAKYPASS and not displayed. This adds the option
`--print-result-after failed-or-flaky` which prints results for both
failing tests as well as FLAKYPASS tests.
---
llvm/utils/lit/lit/Test.py | 10 ++-
llvm/utils/lit/lit/TestRunner.py | 33 +++++----
llvm/utils/lit/lit/cl_arguments.py | 9 ++-
llvm/utils/lit/lit/display.py | 46 ++++++++++---
.../tests/Inputs/diff-test-update-retry/1.in | 1 +
.../Inputs/diff-test-update-retry/lit.cfg | 8 +++
.../multiple-split-file-enough-retries.in | 19 ++++++
.../multiple-split-file-enough-retries.out | 20 ++++++
.../multiple-split-file-no-enough-retries.out | 0
.../multiple-split-file-not-enough-retries.in | 20 ++++++
...multiple-split-file-not-enough-retries.out | 22 ++++++
.../multiple-split-file-unrelated-failure.in | 21 ++++++
.../multiple-split-file-unrelated-failure.out | 21 ++++++
.../single-split-file.in | 7 ++
.../single-split-file.out | 8 +++
.../utils/lit/tests/diff-test-update-retry.py | 67 +++++++++++++++++++
llvm/utils/lit/tests/diff-test-update.py | 12 ++--
17 files changed, 292 insertions(+), 32 deletions(-)
create mode 100644 llvm/utils/lit/tests/Inputs/diff-test-update-retry/1.in
create mode 100644 llvm/utils/lit/tests/Inputs/diff-test-update-retry/lit.cfg
create mode 100644 llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-enough-retries.in
create mode 100644 llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-enough-retries.out
create mode 100644 llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-no-enough-retries.out
create mode 100644 llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-not-enough-retries.in
create mode 100644 llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-not-enough-retries.out
create mode 100644 llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-unrelated-failure.in
create mode 100644 llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-unrelated-failure.out
create mode 100644 llvm/utils/lit/tests/Inputs/diff-test-update-retry/single-split-file.in
create mode 100644 llvm/utils/lit/tests/Inputs/diff-test-update-retry/single-split-file.out
create mode 100644 llvm/utils/lit/tests/diff-test-update-retry.py
diff --git a/llvm/utils/lit/lit/Test.py b/llvm/utils/lit/lit/Test.py
index 83a09eb784fd3..e06c3610404b9 100644
--- a/llvm/utils/lit/lit/Test.py
+++ b/llvm/utils/lit/lit/Test.py
@@ -152,7 +152,13 @@ class Result(object):
"""Wrapper for the results of executing an individual test."""
def __init__(
- self, code, output="", elapsed=None, attempts=1, max_allowed_attempts=None
+ self,
+ code,
+ output="",
+ elapsed=None,
+ attempts=1,
+ max_allowed_attempts=None,
+ test_updater_outputs=[],
):
# The result code.
self.code = code
@@ -170,6 +176,8 @@ def __init__(
self.attempts = attempts
# How many attempts were allowed for this test
self.max_allowed_attempts = max_allowed_attempts
+ # Outputs from test updaters. One entry per attempt, or empty if disabled.
+ self.test_updater_outputs = test_updater_outputs
def addMetric(self, name, value):
"""
diff --git a/llvm/utils/lit/lit/TestRunner.py b/llvm/utils/lit/lit/TestRunner.py
index 2683180d2864d..3e31e2eab07e1 100644
--- a/llvm/utils/lit/lit/TestRunner.py
+++ b/llvm/utils/lit/lit/TestRunner.py
@@ -1190,8 +1190,9 @@ def formatOutput(title, data, limit=None):
# from the script, and there is no execution trace.
def executeScriptInternal(
test, litConfig, tmpBase, commands, cwd, debug=True
-) -> Tuple[str, str, int, Optional[str]]:
+) -> Tuple[str, str, int, Optional[str], Optional[str]]:
cmds = []
+ update_output = None
for i, ln in enumerate(commands):
# Within lit, we try to always add '%dbg(...)' to command lines in order
# to maximize debuggability. However, custom lit test formats might not
@@ -1326,14 +1327,14 @@ def executeScriptInternal(
output += traceback.format_exc()
raise TestUpdaterException(output)
if update_output:
- for line in update_output.splitlines():
- out += f"# {line}\n"
break
- return out, err, exitCode, timeoutInfo
+ return out, err, exitCode, timeoutInfo, update_output
-def executeScript(test, litConfig, tmpBase, commands, cwd):
+def executeScript(
+ test, litConfig, tmpBase, commands, cwd
+) -> Tuple[str, str, int, Optional[str], Optional[str]]:
bashPath = litConfig.getBashPath()
isWin32CMDEXE = litConfig.isWindows and not bashPath
script = tmpBase + ".script"
@@ -1429,9 +1430,9 @@ def executeScript(test, litConfig, tmpBase, commands, cwd):
env=env,
timeout=litConfig.maxIndividualTestTime,
)
- return (out, err, exitCode, None)
+ return (out, err, exitCode, None, None)
except lit.util.ExecuteCommandTimeoutException as e:
- return (e.out, e.err, e.exitCode, e.msg)
+ return (e.out, e.err, e.exitCode, e.msg, None)
def parseIntegratedTestScriptCommands(source_path, keywords):
@@ -2338,7 +2339,7 @@ def _runShTest(test, litConfig, useExternalSh, script, tmpBase) -> lit.Test.Resu
# Always returns the tuple (out, err, exitCode, timeoutInfo, status).
def runOnce(
execdir,
- ) -> Tuple[str, str, int, Optional[str], Test.ResultCode]:
+ ) -> Tuple[str, str, int, Optional[str], Test.ResultCode, Optional[str]]:
# script is modified below (for litConfig.per_test_coverage, and for
# %dbg expansions). runOnce can be called multiple times, but applying
# the modifications multiple times can corrupt script, so always modify
@@ -2374,9 +2375,9 @@ def runOnce(
)
except ScriptFatal as e:
out = f"# " + "\n# ".join(str(e).splitlines()) + "\n"
- return out, "", 1, None, Test.UNRESOLVED
+ return out, "", 1, None, Test.UNRESOLVED, None
- out, err, exitCode, timeoutInfo = res
+ out, err, exitCode, timeoutInfo, test_update_output = res
if exitCode == 0:
status = Test.PASS
else:
@@ -2384,7 +2385,7 @@ def runOnce(
status = Test.FAIL
else:
status = Test.TIMEOUT
- return out, err, exitCode, timeoutInfo, status
+ return out, err, exitCode, timeoutInfo, status, test_update_output
# Create the output directory if it does not already exist.
pathlib.Path(tmpBase).parent.mkdir(parents=True, exist_ok=True)
@@ -2392,9 +2393,11 @@ def runOnce(
# Re-run failed tests up to test.allowed_retries times.
execdir = os.path.dirname(test.getExecPath())
attempts = test.allowed_retries + 1
+ test_updates = []
for i in range(attempts):
res = runOnce(execdir)
- out, err, exitCode, timeoutInfo, status = res
+ out, err, exitCode, timeoutInfo, status, test_update_output = res
+ test_updates.append(test_update_output)
if status != Test.FAIL:
break
@@ -2417,7 +2420,11 @@ def runOnce(
output += """Command Output (stderr):\n--\n%s\n--\n""" % (err,)
return lit.Test.Result(
- status, output, attempts=i + 1, max_allowed_attempts=attempts
+ status,
+ output,
+ attempts=i + 1,
+ max_allowed_attempts=attempts,
+ test_updater_outputs=test_updates,
)
diff --git a/llvm/utils/lit/lit/cl_arguments.py b/llvm/utils/lit/lit/cl_arguments.py
index ee05847e2c765..2fe2ed60aca70 100644
--- a/llvm/utils/lit/lit/cl_arguments.py
+++ b/llvm/utils/lit/lit/cl_arguments.py
@@ -19,7 +19,8 @@ class TestOrder(enum.Enum):
class TestOutputLevel(enum.IntEnum):
OFF = 0
FAILED = 1
- ALL = 2
+ FAILED_OR_FLAKY = 2
+ ALL = 3
@classmethod
def create(cls, value):
@@ -27,6 +28,8 @@ def create(cls, value):
return cls.OFF
if value == "failed":
return cls.FAILED
+ if value == "failed-or-flaky":
+ return cls.FAILED_OR_FLAKY
if value == "all":
return cls.ALL
raise ValueError(f"invalid output level {repr(value)} of type {type(value)}")
@@ -112,7 +115,7 @@ def parse_args():
"--test-output",
help="Control whether the executed commands and their outputs are printed after each test has executed (default off). "
"If --print-result-after is set lower than the level given to --test-output, --print-result-after is raised to match.",
- choices=["off", "failed", "all"],
+ choices=["off", "failed", "failed-or-flaky", "all"],
default="off",
action=TestOutputAction,
)
@@ -120,7 +123,7 @@ def parse_args():
"--print-result-after",
help="Control which the executed test names and results are printed after each test has executed (default all). "
"If --test-output is set higher than the level given to --print-result-after, --test-output is lowered to match.",
- choices=["off", "failed", "all"],
+ choices=["off", "failed", "failed-or-flaky", "all"],
default="all",
action=TestOutputAction,
)
diff --git a/llvm/utils/lit/lit/display.py b/llvm/utils/lit/lit/display.py
index 4dc04d93d3ea7..8aec448f8b2fe 100644
--- a/llvm/utils/lit/lit/display.py
+++ b/llvm/utils/lit/lit/display.py
@@ -1,5 +1,9 @@
import sys
+from argparse import Namespace
+from typing import Optional
+from lit.Test import Test
+
def create_display(opts, tests, total_tests, workers):
if opts.print_result_after == "off" and not opts.useProgressBar:
@@ -76,8 +80,24 @@ def clear(self, interrupted):
pass
+def shouldPrintInfo(infoOption, test):
+ if infoOption == "all":
+ return True
+ if test.isFailure():
+ return infoOption == "failed" or infoOption == "failed-or-flaky"
+ if test.result.attempts > 1:
+ return infoOption == "failed-or-flaky"
+ return False
+
+
class Display(object):
- def __init__(self, opts, tests, header, progress_bar):
+ def __init__(
+ self,
+ opts: Namespace,
+ tests: list[Test],
+ header: Optional[str],
+ progress_bar,
+ ):
self.opts = opts
self.num_tests = len(tests)
self.header = header
@@ -94,11 +114,7 @@ def print_header(self):
def update(self, test):
self.completed += 1
- show_result = (
- test.isFailure()
- and self.opts.print_result_after == "failed"
- or self.opts.print_result_after == "all"
- )
+ show_result = shouldPrintInfo(self.opts.print_result_after, test)
if show_result:
if self.progress_bar:
self.progress_bar.clear(interrupted=False)
@@ -133,10 +149,9 @@ def print_result(self, test):
)
)
+ print_result = shouldPrintInfo(self.opts.test_output, test)
# Show the test failure output, if requested.
- if (
- test.isFailure() and self.opts.test_output == "failed"
- ) or self.opts.test_output == "all":
+ if print_result:
if test.isFailure():
print("%s TEST '%s' FAILED %s" % ("*" * 20, test_name, "*" * 20))
out = test.result.output
@@ -157,6 +172,19 @@ def print_result(self, test):
print(out)
print("*" * 20)
+ # Report any automatic fixes of the test case
+ if test.result.test_updater_outputs:
+ had_any_updates = False
+ for i, updater_result in enumerate(test.result.test_updater_outputs):
+ if not updater_result:
+ continue
+ if test.result.attempts > 1:
+ print(f"[Attempt {i + 1}]")
+ print(updater_result)
+ had_any_updates = True
+ if had_any_updates:
+ print("*" * 10)
+
# Report test metrics, if present.
if test.result.metrics:
print("%s TEST '%s' RESULTS %s" % ("*" * 10, test_name, "*" * 10))
diff --git a/llvm/utils/lit/tests/Inputs/diff-test-update-retry/1.in b/llvm/utils/lit/tests/Inputs/diff-test-update-retry/1.in
new file mode 100644
index 0000000000000..b7d6715e2df11
--- /dev/null
+++ b/llvm/utils/lit/tests/Inputs/diff-test-update-retry/1.in
@@ -0,0 +1 @@
+FOO
diff --git a/llvm/utils/lit/tests/Inputs/diff-test-update-retry/lit.cfg b/llvm/utils/lit/tests/Inputs/diff-test-update-retry/lit.cfg
new file mode 100644
index 0000000000000..4dd1f975de005
--- /dev/null
+++ b/llvm/utils/lit/tests/Inputs/diff-test-update-retry/lit.cfg
@@ -0,0 +1,8 @@
+import lit.formats
+
+config.name = "diff-test-update-retry"
+config.suffixes = [".test"]
+config.test_format = lit.formats.ShTest()
+config.test_source_root = None
+config.test_exec_root = None
+
diff --git a/llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-enough-retries.in b/llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-enough-retries.in
new file mode 100644
index 0000000000000..7425478111279
--- /dev/null
+++ b/llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-enough-retries.in
@@ -0,0 +1,19 @@
+# ALLOW_RETRIES: 5
+
+# RUN: split-file %s %t
+# RUN: cp %S/1.in %t/out.txt
+
+# RUN: diff %t/test2.expected %t/out.txt
+# RUN: diff %t/test3.expected %t/out.txt
+# RUN: diff %t/test4.expected %t/out.txt
+# RUN: diff %t/test5.expected %t/out.txt
+
+#--- test1.expected
+unrelated
+#--- test2.expected
+#--- test3.expected
+#--- test4.expected
+filler
+#--- test5.expected
+
+
diff --git a/llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-enough-retries.out b/llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-enough-retries.out
new file mode 100644
index 0000000000000..15868c5c977d6
--- /dev/null
+++ b/llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-enough-retries.out
@@ -0,0 +1,20 @@
+# ALLOW_RETRIES: 5
+
+# RUN: split-file %s %t
+# RUN: cp %S/1.in %t/out.txt
+
+# RUN: diff %t/test2.expected %t/out.txt
+# RUN: diff %t/test3.expected %t/out.txt
+# RUN: diff %t/test4.expected %t/out.txt
+# RUN: diff %t/test5.expected %t/out.txt
+
+#--- test1.expected
+unrelated
+#--- test2.expected
+FOO
+#--- test3.expected
+FOO
+#--- test4.expected
+FOO
+#--- test5.expected
+FOO
diff --git a/llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-no-enough-retries.out b/llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-no-enough-retries.out
new file mode 100644
index 0000000000000..e69de29bb2d1d
diff --git a/llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-not-enough-retries.in b/llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-not-enough-retries.in
new file mode 100644
index 0000000000000..f878a163a01a5
--- /dev/null
+++ b/llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-not-enough-retries.in
@@ -0,0 +1,20 @@
+# ALLOW_RETRIES: 2
+
+# RUN: split-file %s %t
+# RUN: cp %S/1.in %t/out.txt
+
+# RUN: diff %t/test2.expected %t/out.txt
+# RUN: diff %t/test3.expected %t/out.txt
+# RUN: diff %t/test4.expected %t/out.txt
+# RUN: diff %t/test5.expected %t/out.txt
+
+#--- test1.expected
+unrelated
+#--- test2.expected
+#--- test3.expected
+#--- test4.expected
+filler
+#--- test5.expected
+
+
+
diff --git a/llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-not-enough-retries.out b/llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-not-enough-retries.out
new file mode 100644
index 0000000000000..6e4a4f80ce4b0
--- /dev/null
+++ b/llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-not-enough-retries.out
@@ -0,0 +1,22 @@
+# ALLOW_RETRIES: 2
+
+# RUN: split-file %s %t
+# RUN: cp %S/1.in %t/out.txt
+
+# RUN: diff %t/test2.expected %t/out.txt
+# RUN: diff %t/test3.expected %t/out.txt
+# RUN: diff %t/test4.expected %t/out.txt
+# RUN: diff %t/test5.expected %t/out.txt
+
+#--- test1.expected
+unrelated
+#--- test2.expected
+FOO
+#--- test3.expected
+FOO
+#--- test4.expected
+FOO
+#--- test5.expected
+
+
+
diff --git a/llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-unrelated-failure.in b/llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-unrelated-failure.in
new file mode 100644
index 0000000000000..b544217e550c4
--- /dev/null
+++ b/llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-unrelated-failure.in
@@ -0,0 +1,21 @@
+# ALLOW_RETRIES: 4
+
+# RUN: split-file %s %t
+# RUN: cp %S/1.in %t/out.txt
+
+# RUN: diff %t/test2.expected %t/out.txt
+# RUN: diff %t/test3.expected %t/out.txt
+# RUN: diff %t/test4.expected %t/out.txt
+# RUN: diff %t/test5.expected %t/out.txt
+# RUN: not echo "fail with nothing left to updated"
+
+#--- test1.expected
+unrelated
+#--- test2.expected
+#--- test3.expected
+#--- test4.expected
+filler
+#--- test5.expected
+
+
+
diff --git a/llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-unrelated-failure.out b/llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-unrelated-failure.out
new file mode 100644
index 0000000000000..6fb026175dc4b
--- /dev/null
+++ b/llvm/utils/lit/tests/Inputs/diff-test-update-retry/multiple-split-file-unrelated-failure.out
@@ -0,0 +1,21 @@
+# ALLOW_RETRIES: 4
+
+# RUN: split-file %s %t
+# RUN: cp %S/1.in %t/out.txt
+
+# RUN: diff %t/test2.expected %t/out.txt
+# RUN: diff %t/test3.expected %t/out.txt
+# RUN: diff %t/test4.expected %t/out.txt
+# RUN: diff %t/test5.expected %t/out.txt
+# RUN: not echo "fail with nothing left to updated"
+
+#--- test1.expected
+unrelated
+#--- test2.expected
+FOO
+#--- test3.expected
+FOO
+#--- test4.expected
+FOO
+#--- test5.expected
+FOO
diff --git a/llvm/utils/lit/tests/Inputs/diff-test-update-retry/single-split-file.in b/llvm/utils/lit/tests/Inputs/diff-test-update-retry/single-split-file.in
new file mode 100644
index 0000000000000..861daecd173b0
--- /dev/null
+++ b/llvm/utils/lit/tests/Inputs/diff-test-update-retry/single-split-file.in
@@ -0,0 +1,7 @@
+# ALLOW_RETRIES: 1
+
+# RUN: split-file %s %t
+# RUN: cp %S/1.in %t/out.txt
+# RUN: diff %t/test.expected %t/out.txt
+
+#--- test.expected
diff --git a/llvm/utils/lit/tests/Inputs/diff-test-update-retry/single-split-file.out b/llvm/utils/lit/tests/Inputs/diff-test-update-retry/single-split-file.out
new file mode 100644
index 0000000000000..4492600e2ba11
--- /dev/null
+++ b/llvm/utils/lit/tests/Inputs/diff-test-update-retry/single-split-file.out
@@ -0,0 +1,8 @@
+# ALLOW_RETRIES: 1
+
+# RUN: split-file %s %t
+# RUN: cp %S/1.in %t/out.txt
+# RUN: diff %t/test.expected %t/out.txt
+
+#--- test.expected
+FOO
diff --git a/llvm/utils/lit/tests/diff-test-update-retry.py b/llvm/utils/lit/tests/diff-test-update-retry.py
new file mode 100644
index 0000000000000..8385c9de205b1
--- /dev/null
+++ b/llvm/utils/lit/tests/diff-test-update-retry.py
@@ -0,0 +1,67 @@
+# RUN: rm -rf %t && mkdir -p %t
+
+# RUN: cp %S/Inputs/diff-test-update-retry/1.in %t/1.in
+# RUN: cp %S/Inputs/diff-test-update-retry/lit.cfg %t/lit.cfg
+#
+# RUN: cp %S/Inputs/diff-test-update-retry/single-split-file.in %t/single-split-file.test
+# RUN: cp %S/Inputs/diff-test-update-retry/multiple-split-file-enough-retries.in %t/multiple-split-file-enough-retries.test
+# RUN: cp %S/Inputs/diff-test-update-retry/multiple-split-file-not-enough-retries.in %t/multiple-split-file-not-enough-retries.test
+# RUN: cp %S/Inputs/diff-test-update-retry/multiple-split-file-unrelated-failure.in %t/multiple-split-file-unrelated-failure.test
+
+# RUN: not %{lit} --update-tests -v %t > %t/out.txt
+
+# RUN: diff --strip-trailing-cr %S/Inputs/diff-test-update-retry/single-split-file.out %t/single-split-file.test
+# RUN: diff --strip-trailing-cr %S/Inputs/diff-test-update-retry/multiple-split-file-enough-retries.out %t/multiple-split-file-enough-retries.test
+# RUN: diff --strip-trailing-cr %S/Inputs/diff-test-update-retry/multiple-split-file-not-enough-retries.out %t/multiple-split-file-not-enough-retries.test
+# RUN: diff --strip-trailing-cr %S/Inputs/diff-test-update-retry/multiple-split-file-unrelated-failure.out %t/multiple-split-file-unrelated-failure.test
+
+# RUN: FileCheck %s < %t/out.txt
+
+# CHECK-LABEL: FLAKYPASS: diff-test-update-retry :: multiple-split-file-enough-retries.test
+# CHECK-SAME: (1 of 4, 5 of 6 attempts)
+# CHECK-NEXT: [Attempt 1]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
+# CHECK-NEXT: [Attempt 2]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
+# CHECK-NEXT: [Attempt 3]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
+# CHECK-NEXT: [Attempt 4]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
+# CHECK-NEXT: **********
+
+# CHECK-LABEL: FAIL: diff-test-update-retry :: multiple-split-file-not-enough-retries.test
+# CHECK-SAME: (2 of 4, 3 of 3 attempts)
+# CHECK-NEXT: ******************** TEST 'diff-test-update-retry :: multiple-split-file-not-enough-retries.test' FAILED ********************
+# CHECK: ********************
+# CHECK-NEXT: [Attempt 1]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: [Attempt 2]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: [Attempt 3]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: **********
+
+# CHECK-LABEL: FAIL: diff-test-update-retry :: multiple-split-file-unrelated-failure.test
+# CHECK-SAME: (3 of 4, 5 of 5 attempts)
+# CHECK-NEXT: ******************** TEST 'diff-test-update-retry :: multiple-split-file-unrelated-failure.test' FAILED ********************
+# CHECK: ********************
+# CHECK-NEXT: [Attempt 1]
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: [Attempt 2]
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: [Attempt 3]
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: [Attempt 4]
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: **********
+
+# CHECK-LABEL: FLAKYPASS: diff-test-update-retry :: single-split-file.test
+# CHECK-SAME: (4 of 4, 2 of 2 attempts)
+# CHECK-NEXT: [Attempt 1]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}single-split-file.test
+# CHECK-NEXT: **********
+
+# CHECK-NEXT: ********************
+# CHECK-NEXT: Failed Tests (2):
+# CHECK-NEXT: diff-test-update-retry :: multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: diff-test-update-retry :: multiple-split-file-unrelated-failure.test
diff --git a/llvm/utils/lit/tests/diff-test-update.py b/llvm/utils/lit/tests/diff-test-update.py
index e23d3879bb56c..836327d5da216 100644
--- a/llvm/utils/lit/tests/diff-test-update.py
+++ b/llvm/utils/lit/tests/diff-test-update.py
@@ -19,12 +19,12 @@
# RUN: diff --strip-trailing-cr %S/Inputs/diff-test-update/split-both.out %S/Inputs/diff-test-update/split-both.test
-# CHECK: # update-diff-test: could not deduce source and target from {{.*}}1.in and {{.*}}2.in
-# CHECK: # update-diff-test: could not deduce source and target from {{.*}}1.txt and {{.*}}2.txt
-# CHECK: # update-diff-test: copied {{.*}}my-file.txt to {{.*}}my-file.expected
-# CHECK: # update-diff-test: copied {{.*}}1.txt to {{.*}}empty.txt
-# CHECK: # update-diff-test: copied {{.*}}diff-tmp.test.tmp.txt to {{.*}}diff-t-out.txt
-# CHECK: # update-diff-test: copied {{.*}}unrelated-split.txt to {{.*}}unrelated-split.expected
+# CHECK: update-diff-test: could not deduce source and target from {{.*}}1.in and {{.*}}2.in
+# CHECK: update-diff-test: could not deduce source and target from {{.*}}1.txt and {{.*}}2.txt
+# CHECK: update-diff-test: copied {{.*}}my-file.txt to {{.*}}my-file.expected
+# CHECK: update-diff-test: copied {{.*}}1.txt to {{.*}}empty.txt
+# CHECK: update-diff-test: copied {{.*}}diff-tmp.test.tmp.txt to {{.*}}diff-t-out.txt
+# CHECK: update-diff-test: copied {{.*}}unrelated-split.txt to {{.*}}unrelated-split.expected
# CHECK: Failed: 14 (100.00%)
>From 517c67e70b07957aad01feafd9b70327d1164c05 Mon Sep 17 00:00:00 2001
From: "Henrik G. Olsson" <h_olsson at apple.com>
Date: Wed, 11 Feb 2026 22:04:05 -0800
Subject: [PATCH 02/18] [utils] count updated tests that pass as FIXED instead
of FLAKYPASS
This is a purely semantic change: these two statuses behave identically,
but it is somewhat misleading to label a test that was failing and then
passed after being auto-fixed as "flaky".
---
llvm/utils/lit/lit/Test.py | 1 +
llvm/utils/lit/lit/TestRunner.py | 5 ++++-
llvm/utils/lit/lit/reports.py | 1 +
llvm/utils/lit/tests/diff-test-update-retry.py | 4 ++--
4 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/llvm/utils/lit/lit/Test.py b/llvm/utils/lit/lit/Test.py
index e06c3610404b9..23fc61756afcf 100644
--- a/llvm/utils/lit/lit/Test.py
+++ b/llvm/utils/lit/lit/Test.py
@@ -47,6 +47,7 @@ def __repr__(self):
UNSUPPORTED = ResultCode("UNSUPPORTED", "Unsupported", False)
PASS = ResultCode("PASS", "Passed", False)
FLAKYPASS = ResultCode("FLAKYPASS", "Passed With Retry", False)
+FIXED = ResultCode("FIXED", "Passed After Update", False)
XFAIL = ResultCode("XFAIL", "Expectedly Failed", False)
# Failures
UNRESOLVED = ResultCode("UNRESOLVED", "Unresolved", True)
diff --git a/llvm/utils/lit/lit/TestRunner.py b/llvm/utils/lit/lit/TestRunner.py
index 3e31e2eab07e1..9e5c7d253a236 100644
--- a/llvm/utils/lit/lit/TestRunner.py
+++ b/llvm/utils/lit/lit/TestRunner.py
@@ -2404,7 +2404,10 @@ def runOnce(
# If we had to run the test more than once, count it as a flaky pass. These
# will be printed separately in the test summary.
if i > 0 and status == Test.PASS:
- status = Test.FLAKYPASS
+ if any(test_updates):
+ status = Test.FIXED
+ else:
+ status = Test.FLAKYPASS
# Form the output log.
output = f"Exit Code: {exitCode}\n"
diff --git a/llvm/utils/lit/lit/reports.py b/llvm/utils/lit/lit/reports.py
index 6f8a782a40aa8..39398012d941d 100755
--- a/llvm/utils/lit/lit/reports.py
+++ b/llvm/utils/lit/lit/reports.py
@@ -213,6 +213,7 @@ def gen_resultdb_test_entry(
result_code == lit.Test.PASS
or result_code == lit.Test.XPASS
or result_code == lit.Test.FLAKYPASS
+ or result_code == lit.Test.FIXED
):
test_data["status"] = "PASS"
elif result_code == lit.Test.FAIL or result_code == lit.Test.XFAIL:
diff --git a/llvm/utils/lit/tests/diff-test-update-retry.py b/llvm/utils/lit/tests/diff-test-update-retry.py
index 8385c9de205b1..e02e01f1e8310 100644
--- a/llvm/utils/lit/tests/diff-test-update-retry.py
+++ b/llvm/utils/lit/tests/diff-test-update-retry.py
@@ -17,7 +17,7 @@
# RUN: FileCheck %s < %t/out.txt
-# CHECK-LABEL: FLAKYPASS: diff-test-update-retry :: multiple-split-file-enough-retries.test
+# CHECK-LABEL: FIXED: diff-test-update-retry :: multiple-split-file-enough-retries.test
# CHECK-SAME: (1 of 4, 5 of 6 attempts)
# CHECK-NEXT: [Attempt 1]
# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
@@ -55,7 +55,7 @@
# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: **********
-# CHECK-LABEL: FLAKYPASS: diff-test-update-retry :: single-split-file.test
+# CHECK-LABEL: FIXED: diff-test-update-retry :: single-split-file.test
# CHECK-SAME: (4 of 4, 2 of 2 attempts)
# CHECK-NEXT: [Attempt 1]
# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}single-split-file.test
>From 7a594391e31ac2d17e6b09bc7c8eaf401b65b96b Mon Sep 17 00:00:00 2001
From: "Henrik G. Olsson" <h_olsson at apple.com>
Date: Wed, 11 Feb 2026 22:25:28 -0800
Subject: [PATCH 03/18] [utils] print small divider between subsections, large
divider after
Previously we would print 20 asterisks as a divider before and after the
test output, and then print 10 asterisks after any subsections of extra
info belonging to that test. This gave the appearance of the subsections
belonging to the next test, since there would be a smaller divider
between the subsections and the next test than between the subsections
and the current test. This changes the logic such that subsections are
responsible for printing the divider before it, rather than the one
after it. This way we can ensure that the big divider always ends the
last subsection.
---
llvm/utils/lit/lit/display.py | 24 ++++++++++++-----
.../utils/lit/tests/diff-test-update-retry.py | 26 ++++++++-----------
2 files changed, 28 insertions(+), 22 deletions(-)
diff --git a/llvm/utils/lit/lit/display.py b/llvm/utils/lit/lit/display.py
index 8aec448f8b2fe..92dccae280f88 100644
--- a/llvm/utils/lit/lit/display.py
+++ b/llvm/utils/lit/lit/display.py
@@ -149,6 +149,7 @@ def print_result(self, test):
)
)
+ has_printed_info = False
print_result = shouldPrintInfo(self.opts.test_output, test)
# Show the test failure output, if requested.
if print_result:
@@ -170,31 +171,38 @@ def print_result(self, test):
# in this case.
out = out.decode(encoding=sys.stdout.encoding, errors="ignore")
print(out)
- print("*" * 20)
+ has_printed_info = True
# Report any automatic fixes of the test case
- if test.result.test_updater_outputs:
- had_any_updates = False
+ if any(test.result.test_updater_outputs):
+ if has_printed_info:
+ print("*" * 10)
+ else:
+ has_printed_info = True
for i, updater_result in enumerate(test.result.test_updater_outputs):
if not updater_result:
continue
if test.result.attempts > 1:
print(f"[Attempt {i + 1}]")
print(updater_result)
- had_any_updates = True
- if had_any_updates:
- print("*" * 10)
# Report test metrics, if present.
if test.result.metrics:
+ if has_printed_info:
+ print("*" * 10)
+ else:
+ has_printed_info = True
print("%s TEST '%s' RESULTS %s" % ("*" * 10, test_name, "*" * 10))
items = sorted(test.result.metrics.items())
for metric_name, value in items:
print("%s: %s " % (metric_name, value.format()))
- print("*" * 10)
# Report micro-tests, if present
if test.result.microResults:
+ if has_printed_info:
+ print("*" * 10)
+ else:
+ has_printed_info = True
items = sorted(test.result.microResults.items())
for micro_test_name, micro_test in items:
print("%s MICRO-TEST: %s" % ("*" * 3, micro_test_name))
@@ -204,5 +212,7 @@ def print_result(self, test):
for metric_name, value in sorted_metrics:
print(" %s: %s " % (metric_name, value.format()))
+ if has_printed_info:
+ print("*" * 20)
# Ensure the output is flushed.
sys.stdout.flush()
diff --git a/llvm/utils/lit/tests/diff-test-update-retry.py b/llvm/utils/lit/tests/diff-test-update-retry.py
index e02e01f1e8310..ece7a987546ee 100644
--- a/llvm/utils/lit/tests/diff-test-update-retry.py
+++ b/llvm/utils/lit/tests/diff-test-update-retry.py
@@ -15,10 +15,9 @@
# RUN: diff --strip-trailing-cr %S/Inputs/diff-test-update-retry/multiple-split-file-not-enough-retries.out %t/multiple-split-file-not-enough-retries.test
# RUN: diff --strip-trailing-cr %S/Inputs/diff-test-update-retry/multiple-split-file-unrelated-failure.out %t/multiple-split-file-unrelated-failure.test
-# RUN: FileCheck %s < %t/out.txt
+# RUN: FileCheck %s --match-full-lines < %t/out.txt
-# CHECK-LABEL: FIXED: diff-test-update-retry :: multiple-split-file-enough-retries.test
-# CHECK-SAME: (1 of 4, 5 of 6 attempts)
+# CHECK-LABEL: FIXED: diff-test-update-retry :: multiple-split-file-enough-retries.test (1 of 4, 5 of 6 attempts)
# CHECK-NEXT: [Attempt 1]
# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
# CHECK-NEXT: [Attempt 2]
@@ -27,24 +26,22 @@
# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
# CHECK-NEXT: [Attempt 4]
# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
-# CHECK-NEXT: **********
+# CHECK-NEXT: ********************
-# CHECK-LABEL: FAIL: diff-test-update-retry :: multiple-split-file-not-enough-retries.test
-# CHECK-SAME: (2 of 4, 3 of 3 attempts)
+# CHECK-LABEL: FAIL: diff-test-update-retry :: multiple-split-file-not-enough-retries.test (2 of 4, 3 of 3 attempts)
# CHECK-NEXT: ******************** TEST 'diff-test-update-retry :: multiple-split-file-not-enough-retries.test' FAILED ********************
-# CHECK: ********************
+# CHECK: **********
# CHECK-NEXT: [Attempt 1]
# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
# CHECK-NEXT: [Attempt 2]
# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
# CHECK-NEXT: [Attempt 3]
# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
-# CHECK-NEXT: **********
+# CHECK-NEXT: ********************
-# CHECK-LABEL: FAIL: diff-test-update-retry :: multiple-split-file-unrelated-failure.test
-# CHECK-SAME: (3 of 4, 5 of 5 attempts)
+# CHECK-LABEL: FAIL: diff-test-update-retry :: multiple-split-file-unrelated-failure.test (3 of 4, 5 of 5 attempts)
# CHECK-NEXT: ******************** TEST 'diff-test-update-retry :: multiple-split-file-unrelated-failure.test' FAILED ********************
-# CHECK: ********************
+# CHECK: **********
# CHECK-NEXT: [Attempt 1]
# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 2]
@@ -53,13 +50,12 @@
# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 4]
# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
-# CHECK-NEXT: **********
+# CHECK-NEXT: ********************
-# CHECK-LABEL: FIXED: diff-test-update-retry :: single-split-file.test
-# CHECK-SAME: (4 of 4, 2 of 2 attempts)
+# CHECK-LABEL: FIXED: diff-test-update-retry :: single-split-file.test (4 of 4, 2 of 2 attempts)
# CHECK-NEXT: [Attempt 1]
# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}single-split-file.test
-# CHECK-NEXT: **********
+# CHECK-NEXT: ********************
# CHECK-NEXT: ********************
# CHECK-NEXT: Failed Tests (2):
>From 24709af21082ff3289a3c4afa4093e4982e98a15 Mon Sep 17 00:00:00 2001
From: "Henrik G. Olsson" <h_olsson at apple.com>
Date: Wed, 11 Feb 2026 22:50:00 -0800
Subject: [PATCH 04/18] [utils] add test cases with varying verbosity (NFC)
---
...iff-test-update-retry-default-verbosity.py | 59 ++++++++++++++++
.../diff-test-update-retry-failed-or-flaky.py | 67 +++++++++++++++++++
.../lit/tests/diff-test-update-retry-quiet.py | 43 ++++++++++++
3 files changed, 169 insertions(+)
create mode 100644 llvm/utils/lit/tests/diff-test-update-retry-default-verbosity.py
create mode 100644 llvm/utils/lit/tests/diff-test-update-retry-failed-or-flaky.py
create mode 100644 llvm/utils/lit/tests/diff-test-update-retry-quiet.py
diff --git a/llvm/utils/lit/tests/diff-test-update-retry-default-verbosity.py b/llvm/utils/lit/tests/diff-test-update-retry-default-verbosity.py
new file mode 100644
index 0000000000000..ee1eebcc226c1
--- /dev/null
+++ b/llvm/utils/lit/tests/diff-test-update-retry-default-verbosity.py
@@ -0,0 +1,59 @@
+# RUN: rm -rf %t && mkdir -p %t
+
+# RUN: cp %S/Inputs/diff-test-update-retry/1.in %t/1.in
+# RUN: cp %S/Inputs/diff-test-update-retry/lit.cfg %t/lit.cfg
+#
+# RUN: cp %S/Inputs/diff-test-update-retry/single-split-file.in %t/single-split-file.test
+# RUN: cp %S/Inputs/diff-test-update-retry/multiple-split-file-enough-retries.in %t/multiple-split-file-enough-retries.test
+# RUN: cp %S/Inputs/diff-test-update-retry/multiple-split-file-not-enough-retries.in %t/multiple-split-file-not-enough-retries.test
+# RUN: cp %S/Inputs/diff-test-update-retry/multiple-split-file-unrelated-failure.in %t/multiple-split-file-unrelated-failure.test
+
+# RUN: not %{lit} --update-tests %t > %t/out.txt
+
+# RUN: diff --strip-trailing-cr %S/Inputs/diff-test-update-retry/single-split-file.out %t/single-split-file.test
+# RUN: diff --strip-trailing-cr %S/Inputs/diff-test-update-retry/multiple-split-file-enough-retries.out %t/multiple-split-file-enough-retries.test
+# RUN: diff --strip-trailing-cr %S/Inputs/diff-test-update-retry/multiple-split-file-not-enough-retries.out %t/multiple-split-file-not-enough-retries.test
+# RUN: diff --strip-trailing-cr %S/Inputs/diff-test-update-retry/multiple-split-file-unrelated-failure.out %t/multiple-split-file-unrelated-failure.test
+
+# RUN: FileCheck %s --match-full-lines < %t/out.txt
+
+# CHECK-LABEL: FIXED: diff-test-update-retry :: multiple-split-file-enough-retries.test (1 of 4, 5 of 6 attempts)
+# CHECK-NEXT: [Attempt 1]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
+# CHECK-NEXT: [Attempt 2]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
+# CHECK-NEXT: [Attempt 3]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
+# CHECK-NEXT: [Attempt 4]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
+# CHECK-NEXT: ********************
+
+# CHECK-LABEL: FAIL: diff-test-update-retry :: multiple-split-file-not-enough-retries.test (2 of 4, 3 of 3 attempts)
+# CHECK-NEXT: [Attempt 1]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: [Attempt 2]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: [Attempt 3]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: ********************
+
+# CHECK-LABEL: FAIL: diff-test-update-retry :: multiple-split-file-unrelated-failure.test (3 of 4, 5 of 5 attempts)
+# CHECK-NEXT: [Attempt 1]
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: [Attempt 2]
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: [Attempt 3]
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: [Attempt 4]
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: ********************
+
+# CHECK-LABEL: FIXED: diff-test-update-retry :: single-split-file.test (4 of 4, 2 of 2 attempts)
+# CHECK-NEXT: [Attempt 1]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}single-split-file.test
+# CHECK-NEXT: ********************
+
+# CHECK-NEXT: ********************
+# CHECK-NEXT: Failed Tests (2):
+# CHECK-NEXT: diff-test-update-retry :: multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: diff-test-update-retry :: multiple-split-file-unrelated-failure.test
diff --git a/llvm/utils/lit/tests/diff-test-update-retry-failed-or-flaky.py b/llvm/utils/lit/tests/diff-test-update-retry-failed-or-flaky.py
new file mode 100644
index 0000000000000..a95f0360ba18d
--- /dev/null
+++ b/llvm/utils/lit/tests/diff-test-update-retry-failed-or-flaky.py
@@ -0,0 +1,67 @@
+# RUN: rm -rf %t && mkdir -p %t
+
+# RUN: cp %S/Inputs/diff-test-update-retry/1.in %t/1.in
+# RUN: cp %S/Inputs/diff-test-update-retry/lit.cfg %t/lit.cfg
+#
+# RUN: cp %S/Inputs/diff-test-update-retry/single-split-file.in %t/single-split-file.test
+# RUN: cp %S/Inputs/diff-test-update-retry/multiple-split-file-enough-retries.in %t/multiple-split-file-enough-retries.test
+# RUN: cp %S/Inputs/diff-test-update-retry/multiple-split-file-not-enough-retries.in %t/multiple-split-file-not-enough-retries.test
+# RUN: cp %S/Inputs/diff-test-update-retry/multiple-split-file-unrelated-failure.in %t/multiple-split-file-unrelated-failure.test
+
+# RUN: not %{lit} --update-tests --test-output=failed-or-flaky %t > %t/out.txt
+
+# RUN: diff --strip-trailing-cr %S/Inputs/diff-test-update-retry/single-split-file.out %t/single-split-file.test
+# RUN: diff --strip-trailing-cr %S/Inputs/diff-test-update-retry/multiple-split-file-enough-retries.out %t/multiple-split-file-enough-retries.test
+# RUN: diff --strip-trailing-cr %S/Inputs/diff-test-update-retry/multiple-split-file-not-enough-retries.out %t/multiple-split-file-not-enough-retries.test
+# RUN: diff --strip-trailing-cr %S/Inputs/diff-test-update-retry/multiple-split-file-unrelated-failure.out %t/multiple-split-file-unrelated-failure.test
+
+# RUN: FileCheck %s --match-full-lines < %t/out.txt
+
+# CHECK-LABEL: FIXED: diff-test-update-retry :: multiple-split-file-enough-retries.test (1 of 4, 5 of 6 attempts)
+# CHECK-NEXT: Exit Code: 0
+# CHECK: **********
+# CHECK-NEXT: [Attempt 1]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
+# CHECK-NEXT: [Attempt 2]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
+# CHECK-NEXT: [Attempt 3]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
+# CHECK-NEXT: [Attempt 4]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
+# CHECK-NEXT: ********************
+
+# CHECK-LABEL: FAIL: diff-test-update-retry :: multiple-split-file-not-enough-retries.test (2 of 4, 3 of 3 attempts)
+# CHECK-NEXT: ******************** TEST 'diff-test-update-retry :: multiple-split-file-not-enough-retries.test' FAILED ********************
+# CHECK: **********
+# CHECK-NEXT: [Attempt 1]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: [Attempt 2]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: [Attempt 3]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: ********************
+
+# CHECK-LABEL: FAIL: diff-test-update-retry :: multiple-split-file-unrelated-failure.test (3 of 4, 5 of 5 attempts)
+# CHECK-NEXT: ******************** TEST 'diff-test-update-retry :: multiple-split-file-unrelated-failure.test' FAILED ********************
+# CHECK: **********
+# CHECK-NEXT: [Attempt 1]
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: [Attempt 2]
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: [Attempt 3]
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: [Attempt 4]
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: ********************
+
+# CHECK-LABEL: FIXED: diff-test-update-retry :: single-split-file.test (4 of 4, 2 of 2 attempts)
+# CHECK-NEXT: Exit Code: 0
+# CHECK: **********
+# CHECK-NEXT: [Attempt 1]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}single-split-file.test
+# CHECK-NEXT: ********************
+
+# CHECK-NEXT: ********************
+# CHECK-NEXT: Failed Tests (2):
+# CHECK-NEXT: diff-test-update-retry :: multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: diff-test-update-retry :: multiple-split-file-unrelated-failure.test
diff --git a/llvm/utils/lit/tests/diff-test-update-retry-quiet.py b/llvm/utils/lit/tests/diff-test-update-retry-quiet.py
new file mode 100644
index 0000000000000..df295d94d1078
--- /dev/null
+++ b/llvm/utils/lit/tests/diff-test-update-retry-quiet.py
@@ -0,0 +1,43 @@
+# RUN: rm -rf %t && mkdir -p %t
+
+# RUN: cp %S/Inputs/diff-test-update-retry/1.in %t/1.in
+# RUN: cp %S/Inputs/diff-test-update-retry/lit.cfg %t/lit.cfg
+#
+# RUN: cp %S/Inputs/diff-test-update-retry/single-split-file.in %t/single-split-file.test
+# RUN: cp %S/Inputs/diff-test-update-retry/multiple-split-file-enough-retries.in %t/multiple-split-file-enough-retries.test
+# RUN: cp %S/Inputs/diff-test-update-retry/multiple-split-file-not-enough-retries.in %t/multiple-split-file-not-enough-retries.test
+# RUN: cp %S/Inputs/diff-test-update-retry/multiple-split-file-unrelated-failure.in %t/multiple-split-file-unrelated-failure.test
+
+# RUN: not %{lit} --update-tests -q %t > %t/out.txt
+
+# RUN: diff --strip-trailing-cr %S/Inputs/diff-test-update-retry/single-split-file.out %t/single-split-file.test
+# RUN: diff --strip-trailing-cr %S/Inputs/diff-test-update-retry/multiple-split-file-enough-retries.out %t/multiple-split-file-enough-retries.test
+# RUN: diff --strip-trailing-cr %S/Inputs/diff-test-update-retry/multiple-split-file-not-enough-retries.out %t/multiple-split-file-not-enough-retries.test
+# RUN: diff --strip-trailing-cr %S/Inputs/diff-test-update-retry/multiple-split-file-unrelated-failure.out %t/multiple-split-file-unrelated-failure.test
+
+# RUN: FileCheck %s --match-full-lines --implicit-check-not=update-diff-test --implicit-check-not=FIXED < %t/out.txt
+
+# CHECK-LABEL: FAIL: diff-test-update-retry :: multiple-split-file-not-enough-retries.test (2 of 4, 3 of 3 attempts)
+# CHECK-NEXT: [Attempt 1]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: [Attempt 2]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: [Attempt 3]
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: ********************
+
+# CHECK-LABEL: FAIL: diff-test-update-retry :: multiple-split-file-unrelated-failure.test (3 of 4, 5 of 5 attempts)
+# CHECK-NEXT: [Attempt 1]
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: [Attempt 2]
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: [Attempt 3]
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: [Attempt 4]
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: ********************
+
+# CHECK-NEXT: ********************
+# CHECK-NEXT: Failed Tests (2):
+# CHECK-NEXT: diff-test-update-retry :: multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: diff-test-update-retry :: multiple-split-file-unrelated-failure.test
>From 293c69b9a33f8941394bad1c4b41729f04d69346 Mon Sep 17 00:00:00 2001
From: "Henrik G. Olsson" <h_olsson at apple.com>
Date: Wed, 11 Feb 2026 23:10:20 -0800
Subject: [PATCH 05/18] [utils] specify slice name in DiffUpdater output
This makes it easier after the fact to figure out what happened,
especially when a test is updated multiple times.
---
llvm/utils/lit/lit/DiffUpdater.py | 7 +++---
...iff-test-update-retry-default-verbosity.py | 24 +++++++++----------
.../diff-test-update-retry-failed-or-flaky.py | 24 +++++++++----------
.../lit/tests/diff-test-update-retry-quiet.py | 14 +++++------
.../utils/lit/tests/diff-test-update-retry.py | 24 +++++++++----------
5 files changed, 47 insertions(+), 46 deletions(-)
diff --git a/llvm/utils/lit/lit/DiffUpdater.py b/llvm/utils/lit/lit/DiffUpdater.py
index 9e75e4b4513df..62dfa1c2f6fa1 100644
--- a/llvm/utils/lit/lit/DiffUpdater.py
+++ b/llvm/utils/lit/lit/DiffUpdater.py
@@ -34,10 +34,11 @@ def __str__(self):
class SplitFileTarget:
- def __init__(self, slice_start_idx, test_path, lines):
+ def __init__(self, slice_start_idx, test_path, lines, filename):
self.slice_start_idx = slice_start_idx
self.test_path = test_path
self.lines = lines
+ self.filename = filename
def copyFrom(self, source):
lines_before = self.lines[: self.slice_start_idx + 1]
@@ -58,7 +59,7 @@ def copyFrom(self, source):
f.write(l)
def __str__(self):
- return f"slice in {self.test_path}"
+ return f"slice {self.filename} in {self.test_path}"
@staticmethod
def get_target_dir(commands, test_path):
@@ -89,7 +90,7 @@ def create(path, commands, test_path, target_dir):
break
else:
return None
- return SplitFileTarget(idx, test_path, lines)
+ return SplitFileTarget(idx, test_path, lines, p)
@staticmethod
def _get_split_line_path(l):
diff --git a/llvm/utils/lit/tests/diff-test-update-retry-default-verbosity.py b/llvm/utils/lit/tests/diff-test-update-retry-default-verbosity.py
index ee1eebcc226c1..997066c6ca807 100644
--- a/llvm/utils/lit/tests/diff-test-update-retry-default-verbosity.py
+++ b/llvm/utils/lit/tests/diff-test-update-retry-default-verbosity.py
@@ -19,38 +19,38 @@
# CHECK-LABEL: FIXED: diff-test-update-retry :: multiple-split-file-enough-retries.test (1 of 4, 5 of 6 attempts)
# CHECK-NEXT: [Attempt 1]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test2.expected in {{.*}}multiple-split-file-enough-retries.test
# CHECK-NEXT: [Attempt 2]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test3.expected in {{.*}}multiple-split-file-enough-retries.test
# CHECK-NEXT: [Attempt 3]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test4.expected in {{.*}}multiple-split-file-enough-retries.test
# CHECK-NEXT: [Attempt 4]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test5.expected in {{.*}}multiple-split-file-enough-retries.test
# CHECK-NEXT: ********************
# CHECK-LABEL: FAIL: diff-test-update-retry :: multiple-split-file-not-enough-retries.test (2 of 4, 3 of 3 attempts)
# CHECK-NEXT: [Attempt 1]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test2.expected in {{.*}}multiple-split-file-not-enough-retries.test
# CHECK-NEXT: [Attempt 2]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test3.expected in {{.*}}multiple-split-file-not-enough-retries.test
# CHECK-NEXT: [Attempt 3]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test4.expected in {{.*}}multiple-split-file-not-enough-retries.test
# CHECK-NEXT: ********************
# CHECK-LABEL: FAIL: diff-test-update-retry :: multiple-split-file-unrelated-failure.test (3 of 4, 5 of 5 attempts)
# CHECK-NEXT: [Attempt 1]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test2.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 2]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test3.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 3]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test4.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 4]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test5.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: ********************
# CHECK-LABEL: FIXED: diff-test-update-retry :: single-split-file.test (4 of 4, 2 of 2 attempts)
# CHECK-NEXT: [Attempt 1]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}single-split-file.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test.expected in {{.*}}single-split-file.test
# CHECK-NEXT: ********************
# CHECK-NEXT: ********************
diff --git a/llvm/utils/lit/tests/diff-test-update-retry-failed-or-flaky.py b/llvm/utils/lit/tests/diff-test-update-retry-failed-or-flaky.py
index a95f0360ba18d..39f9f86711858 100644
--- a/llvm/utils/lit/tests/diff-test-update-retry-failed-or-flaky.py
+++ b/llvm/utils/lit/tests/diff-test-update-retry-failed-or-flaky.py
@@ -21,44 +21,44 @@
# CHECK-NEXT: Exit Code: 0
# CHECK: **********
# CHECK-NEXT: [Attempt 1]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test2.expected in {{.*}}multiple-split-file-enough-retries.test
# CHECK-NEXT: [Attempt 2]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test3.expected in {{.*}}multiple-split-file-enough-retries.test
# CHECK-NEXT: [Attempt 3]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test4.expected in {{.*}}multiple-split-file-enough-retries.test
# CHECK-NEXT: [Attempt 4]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test5.expected in {{.*}}multiple-split-file-enough-retries.test
# CHECK-NEXT: ********************
# CHECK-LABEL: FAIL: diff-test-update-retry :: multiple-split-file-not-enough-retries.test (2 of 4, 3 of 3 attempts)
# CHECK-NEXT: ******************** TEST 'diff-test-update-retry :: multiple-split-file-not-enough-retries.test' FAILED ********************
# CHECK: **********
# CHECK-NEXT: [Attempt 1]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test2.expected in {{.*}}multiple-split-file-not-enough-retries.test
# CHECK-NEXT: [Attempt 2]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test3.expected in {{.*}}multiple-split-file-not-enough-retries.test
# CHECK-NEXT: [Attempt 3]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test4.expected in {{.*}}multiple-split-file-not-enough-retries.test
# CHECK-NEXT: ********************
# CHECK-LABEL: FAIL: diff-test-update-retry :: multiple-split-file-unrelated-failure.test (3 of 4, 5 of 5 attempts)
# CHECK-NEXT: ******************** TEST 'diff-test-update-retry :: multiple-split-file-unrelated-failure.test' FAILED ********************
# CHECK: **********
# CHECK-NEXT: [Attempt 1]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test2.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 2]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test3.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 3]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test4.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 4]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test5.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: ********************
# CHECK-LABEL: FIXED: diff-test-update-retry :: single-split-file.test (4 of 4, 2 of 2 attempts)
# CHECK-NEXT: Exit Code: 0
# CHECK: **********
# CHECK-NEXT: [Attempt 1]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}single-split-file.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test.expected in {{.*}}single-split-file.test
# CHECK-NEXT: ********************
# CHECK-NEXT: ********************
diff --git a/llvm/utils/lit/tests/diff-test-update-retry-quiet.py b/llvm/utils/lit/tests/diff-test-update-retry-quiet.py
index df295d94d1078..acb42903f3ab7 100644
--- a/llvm/utils/lit/tests/diff-test-update-retry-quiet.py
+++ b/llvm/utils/lit/tests/diff-test-update-retry-quiet.py
@@ -19,22 +19,22 @@
# CHECK-LABEL: FAIL: diff-test-update-retry :: multiple-split-file-not-enough-retries.test (2 of 4, 3 of 3 attempts)
# CHECK-NEXT: [Attempt 1]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test2.expected in {{.*}}multiple-split-file-not-enough-retries.test
# CHECK-NEXT: [Attempt 2]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test3.expected in {{.*}}multiple-split-file-not-enough-retries.test
# CHECK-NEXT: [Attempt 3]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test4.expected in {{.*}}multiple-split-file-not-enough-retries.test
# CHECK-NEXT: ********************
# CHECK-LABEL: FAIL: diff-test-update-retry :: multiple-split-file-unrelated-failure.test (3 of 4, 5 of 5 attempts)
# CHECK-NEXT: [Attempt 1]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test2.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 2]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test3.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 3]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test4.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 4]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test5.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: ********************
# CHECK-NEXT: ********************
diff --git a/llvm/utils/lit/tests/diff-test-update-retry.py b/llvm/utils/lit/tests/diff-test-update-retry.py
index ece7a987546ee..bac3fb1c4c506 100644
--- a/llvm/utils/lit/tests/diff-test-update-retry.py
+++ b/llvm/utils/lit/tests/diff-test-update-retry.py
@@ -19,42 +19,42 @@
# CHECK-LABEL: FIXED: diff-test-update-retry :: multiple-split-file-enough-retries.test (1 of 4, 5 of 6 attempts)
# CHECK-NEXT: [Attempt 1]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test2.expected in {{.*}}multiple-split-file-enough-retries.test
# CHECK-NEXT: [Attempt 2]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test3.expected in {{.*}}multiple-split-file-enough-retries.test
# CHECK-NEXT: [Attempt 3]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test4.expected in {{.*}}multiple-split-file-enough-retries.test
# CHECK-NEXT: [Attempt 4]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-enough-retries.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test5.expected in {{.*}}multiple-split-file-enough-retries.test
# CHECK-NEXT: ********************
# CHECK-LABEL: FAIL: diff-test-update-retry :: multiple-split-file-not-enough-retries.test (2 of 4, 3 of 3 attempts)
# CHECK-NEXT: ******************** TEST 'diff-test-update-retry :: multiple-split-file-not-enough-retries.test' FAILED ********************
# CHECK: **********
# CHECK-NEXT: [Attempt 1]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test2.expected in {{.*}}multiple-split-file-not-enough-retries.test
# CHECK-NEXT: [Attempt 2]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test3.expected in {{.*}}multiple-split-file-not-enough-retries.test
# CHECK-NEXT: [Attempt 3]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}multiple-split-file-not-enough-retries.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test4.expected in {{.*}}multiple-split-file-not-enough-retries.test
# CHECK-NEXT: ********************
# CHECK-LABEL: FAIL: diff-test-update-retry :: multiple-split-file-unrelated-failure.test (3 of 4, 5 of 5 attempts)
# CHECK-NEXT: ******************** TEST 'diff-test-update-retry :: multiple-split-file-unrelated-failure.test' FAILED ********************
# CHECK: **********
# CHECK-NEXT: [Attempt 1]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test2.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 2]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test3.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 3]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test4.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 4]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test5.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: ********************
# CHECK-LABEL: FIXED: diff-test-update-retry :: single-split-file.test (4 of 4, 2 of 2 attempts)
# CHECK-NEXT: [Attempt 1]
-# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice in {{.*}}single-split-file.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test.expected in {{.*}}single-split-file.test
# CHECK-NEXT: ********************
# CHECK-NEXT: ********************
>From f7de502fd519766a440901f6c2d478e99fc02344 Mon Sep 17 00:00:00 2001
From: "Henrik G. Olsson" <h_olsson at apple.com>
Date: Wed, 11 Feb 2026 23:13:40 -0800
Subject: [PATCH 06/18] remove path separator from test case (NFC)
---
.../lit/tests/diff-test-update-retry-default-verbosity.py | 8 ++++----
.../lit/tests/diff-test-update-retry-failed-or-flaky.py | 8 ++++----
llvm/utils/lit/tests/diff-test-update-retry-quiet.py | 8 ++++----
llvm/utils/lit/tests/diff-test-update-retry.py | 8 ++++----
4 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/llvm/utils/lit/tests/diff-test-update-retry-default-verbosity.py b/llvm/utils/lit/tests/diff-test-update-retry-default-verbosity.py
index 997066c6ca807..e9929dfdb58c3 100644
--- a/llvm/utils/lit/tests/diff-test-update-retry-default-verbosity.py
+++ b/llvm/utils/lit/tests/diff-test-update-retry-default-verbosity.py
@@ -39,13 +39,13 @@
# CHECK-LABEL: FAIL: diff-test-update-retry :: multiple-split-file-unrelated-failure.test (3 of 4, 5 of 5 attempts)
# CHECK-NEXT: [Attempt 1]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test2.expected in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test2.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 2]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test3.expected in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test3.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 3]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test4.expected in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test4.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 4]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test5.expected in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test5.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: ********************
# CHECK-LABEL: FIXED: diff-test-update-retry :: single-split-file.test (4 of 4, 2 of 2 attempts)
diff --git a/llvm/utils/lit/tests/diff-test-update-retry-failed-or-flaky.py b/llvm/utils/lit/tests/diff-test-update-retry-failed-or-flaky.py
index 39f9f86711858..718e7b52bc024 100644
--- a/llvm/utils/lit/tests/diff-test-update-retry-failed-or-flaky.py
+++ b/llvm/utils/lit/tests/diff-test-update-retry-failed-or-flaky.py
@@ -45,13 +45,13 @@
# CHECK-NEXT: ******************** TEST 'diff-test-update-retry :: multiple-split-file-unrelated-failure.test' FAILED ********************
# CHECK: **********
# CHECK-NEXT: [Attempt 1]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test2.expected in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test2.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 2]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test3.expected in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test3.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 3]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test4.expected in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test4.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 4]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test5.expected in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test5.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: ********************
# CHECK-LABEL: FIXED: diff-test-update-retry :: single-split-file.test (4 of 4, 2 of 2 attempts)
diff --git a/llvm/utils/lit/tests/diff-test-update-retry-quiet.py b/llvm/utils/lit/tests/diff-test-update-retry-quiet.py
index acb42903f3ab7..21dc9a0d481ae 100644
--- a/llvm/utils/lit/tests/diff-test-update-retry-quiet.py
+++ b/llvm/utils/lit/tests/diff-test-update-retry-quiet.py
@@ -28,13 +28,13 @@
# CHECK-LABEL: FAIL: diff-test-update-retry :: multiple-split-file-unrelated-failure.test (3 of 4, 5 of 5 attempts)
# CHECK-NEXT: [Attempt 1]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test2.expected in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test2.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 2]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test3.expected in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test3.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 3]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test4.expected in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test4.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 4]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test5.expected in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test5.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: ********************
# CHECK-NEXT: ********************
diff --git a/llvm/utils/lit/tests/diff-test-update-retry.py b/llvm/utils/lit/tests/diff-test-update-retry.py
index bac3fb1c4c506..15dace3470821 100644
--- a/llvm/utils/lit/tests/diff-test-update-retry.py
+++ b/llvm/utils/lit/tests/diff-test-update-retry.py
@@ -43,13 +43,13 @@
# CHECK-NEXT: ******************** TEST 'diff-test-update-retry :: multiple-split-file-unrelated-failure.test' FAILED ********************
# CHECK: **********
# CHECK-NEXT: [Attempt 1]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test2.expected in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test2.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 2]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test3.expected in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test3.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 3]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test4.expected in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test4.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: [Attempt 4]
-# CHECK-NEXT: update-diff-test: copied {{.*}}multiple-split-file-unrelated-failure.test.tmp/out.txt to slice test5.expected in {{.*}}multiple-split-file-unrelated-failure.test
+# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test5.expected in {{.*}}multiple-split-file-unrelated-failure.test
# CHECK-NEXT: ********************
# CHECK-LABEL: FIXED: diff-test-update-retry :: single-split-file.test (4 of 4, 2 of 2 attempts)
>From fc2aa00c2327d5855af013cd1de7fea940f96cde Mon Sep 17 00:00:00 2001
From: "Henrik G. Olsson" <h_olsson at apple.com>
Date: Wed, 11 Feb 2026 23:58:26 -0800
Subject: [PATCH 07/18] [utils] update libcxx lit
---
libcxx/utils/libcxx/test/format.py | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/libcxx/utils/libcxx/test/format.py b/libcxx/utils/libcxx/test/format.py
index 76e9115295b99..50ddb89a6bc99 100644
--- a/libcxx/utils/libcxx/test/format.py
+++ b/libcxx/utils/libcxx/test/format.py
@@ -36,7 +36,7 @@ def _checkBaseSubstitutions(substitutions):
def _executeScriptInternal(test, litConfig, commands):
"""
- Returns (stdout, stderr, exitCode, timeoutInfo, parsedCommands), or an appropriate lit.Test.Result
+ Returns (stdout, stderr, exitCode, timeoutInfo, parsedCommands, testUpdateOutput), or an appropriate lit.Test.Result
in case of an error while parsing the script.
TODO: This really should be easier to access from Lit itself
@@ -53,9 +53,9 @@ def _executeScriptInternal(test, litConfig, commands):
)
except lit.TestRunner.ScriptFatal as e:
res = ("", str(e), 127, None)
- (out, err, exitCode, timeoutInfo) = res
+ (out, err, exitCode, timeoutInfo, testUpdateOutput) = res
- return (out, err, exitCode, timeoutInfo, parsedCommands)
+ return (out, err, exitCode, timeoutInfo, parsedCommands, testUpdateOutput)
def _validateModuleDependencies(modules):
@@ -406,7 +406,7 @@ def _generateGenTest(self, testSuite, pathInSuite, litConfig, localConfig):
yield generator
return
- (out, err, exitCode, _, _) = result
+ (out, err, exitCode, _, _, _) = result
if exitCode != 0:
raise RuntimeError(f"Error while trying to generate gen test {'/'.join(pathInSuite)}\nstdout:\n{out}\n\nstderr:\n{err}")
>From 6608f5229ee7329248a04c3fe54ac981d6c19301 Mon Sep 17 00:00:00 2001
From: "Henrik G. Olsson" <h_olsson at apple.com>
Date: Thu, 12 Feb 2026 00:03:13 -0800
Subject: [PATCH 08/18] DNM: debug windows CI failure
---
llvm/utils/lit/tests/diff-test-update-retry.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/llvm/utils/lit/tests/diff-test-update-retry.py b/llvm/utils/lit/tests/diff-test-update-retry.py
index 15dace3470821..1aae27076ecfd 100644
--- a/llvm/utils/lit/tests/diff-test-update-retry.py
+++ b/llvm/utils/lit/tests/diff-test-update-retry.py
@@ -10,13 +10,13 @@
# RUN: not %{lit} --update-tests -v %t > %t/out.txt
+# RUN: FileCheck %s --match-full-lines --dump-input-filter=all < %t/out.txt
+
# RUN: diff --strip-trailing-cr %S/Inputs/diff-test-update-retry/single-split-file.out %t/single-split-file.test
# RUN: diff --strip-trailing-cr %S/Inputs/diff-test-update-retry/multiple-split-file-enough-retries.out %t/multiple-split-file-enough-retries.test
# RUN: diff --strip-trailing-cr %S/Inputs/diff-test-update-retry/multiple-split-file-not-enough-retries.out %t/multiple-split-file-not-enough-retries.test
# RUN: diff --strip-trailing-cr %S/Inputs/diff-test-update-retry/multiple-split-file-unrelated-failure.out %t/multiple-split-file-unrelated-failure.test
-# RUN: FileCheck %s --match-full-lines < %t/out.txt
-
# CHECK-LABEL: FIXED: diff-test-update-retry :: multiple-split-file-enough-retries.test (1 of 4, 5 of 6 attempts)
# CHECK-NEXT: [Attempt 1]
# CHECK-NEXT: update-diff-test: copied {{.*}}out.txt to slice test2.expected in {{.*}}multiple-split-file-enough-retries.test
>From 0b261c70966d9ca7dfadfdf80a2e286549e3be10 Mon Sep 17 00:00:00 2001
From: "Henrik G. Olsson" <h_olsson at apple.com>
Date: Thu, 12 Feb 2026 16:32:17 -0800
Subject: [PATCH 09/18] update libcxx lit script
---
libcxx/utils/libcxx/test/dsl.py | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/libcxx/utils/libcxx/test/dsl.py b/libcxx/utils/libcxx/test/dsl.py
index 88fc49160c56b..0751961c6e900 100644
--- a/libcxx/utils/libcxx/test/dsl.py
+++ b/libcxx/utils/libcxx/test/dsl.py
@@ -144,7 +144,7 @@ def sourceBuilds(config, source, additionalFlags=[]):
with _makeConfigTest(config) as test:
with open(test.getSourcePath(), "w") as sourceFile:
sourceFile.write(source)
- _, _, exitCode, _, _ = _executeWithFakeConfig(
+ _, _, exitCode, _, _, _ = _executeWithFakeConfig(
test, ["%{{build}} {}".format(" ".join(additionalFlags))]
)
return exitCode == 0
@@ -167,7 +167,7 @@ def programOutput(config, program, args=None):
with _makeConfigTest(config) as test:
with open(test.getSourcePath(), "w") as source:
source.write(program)
- _, err, exitCode, _, buildcmd = _executeWithFakeConfig(test, ["%{build}"])
+ _, err, exitCode, _, buildcmd, _ = _executeWithFakeConfig(test, ["%{build}"])
if exitCode != 0:
raise ConfigurationCompilationError(
"Failed to build program, cmd:\n{}\nstderr is:\n{}".format(
@@ -175,7 +175,7 @@ def programOutput(config, program, args=None):
)
)
- out, err, exitCode, _, runcmd = _executeWithFakeConfig(
+ out, err, exitCode, _, runcmd, _ = _executeWithFakeConfig(
test, ["%{{run}} {}".format(" ".join(args))]
)
if exitCode != 0:
@@ -212,7 +212,7 @@ def tryCompileFlag(config, flag):
"""
# fmt: off
with _makeConfigTest(config) as test:
- out, err, exitCode, timeoutInfo, _ = _executeWithFakeConfig(test, [
+ out, err, exitCode, timeoutInfo, _, _ = _executeWithFakeConfig(test, [
"%{{cxx}} -xc++ {} -Werror -fsyntax-only %{{flags}} %{{compile_flags}} {}".format(os.devnull, flag)
])
return exitCode, out, err
@@ -239,7 +239,7 @@ def runScriptExitCode(config, script):
could appear on the right-hand-side of a `RUN:` keyword.
"""
with _makeConfigTest(config) as test:
- _, _, exitCode, _, _ = _executeWithFakeConfig(test, script)
+ _, _, exitCode, _, _, _ = _executeWithFakeConfig(test, script)
return exitCode
@@ -253,7 +253,7 @@ def commandOutput(config, command):
could appear on the right-hand-side of a `RUN:` keyword.
"""
with _makeConfigTest(config) as test:
- out, err, exitCode, _, cmd = _executeWithFakeConfig(test, command)
+ out, err, exitCode, _, cmd, _ = _executeWithFakeConfig(test, command)
if exitCode != 0:
raise ConfigurationRuntimeError(
"Failed to run command: {}\nstderr is:\n{}".format(cmd, err)
@@ -330,7 +330,7 @@ def compilerMacros(config, flags=""):
#endif
"""
)
- unparsedOutput, err, exitCode, _, cmd = _executeWithFakeConfig(
+ unparsedOutput, err, exitCode, _, cmd, _ = _executeWithFakeConfig(
test, ["%{{cxx}} %s -dM -E %{{flags}} %{{compile_flags}} {}".format(flags)]
)
if exitCode != 0:
>From 1ae7214f3c7498a11a58f38746ab28e706658939 Mon Sep 17 00:00:00 2001
From: "Henrik G. Olsson" <h_olsson at apple.com>
Date: Thu, 12 Feb 2026 16:39:44 -0800
Subject: [PATCH 10/18] DNM: debug windows CI failure
---
llvm/utils/lit/lit/DiffUpdater.py | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/llvm/utils/lit/lit/DiffUpdater.py b/llvm/utils/lit/lit/DiffUpdater.py
index 62dfa1c2f6fa1..ae903e014af67 100644
--- a/llvm/utils/lit/lit/DiffUpdater.py
+++ b/llvm/utils/lit/lit/DiffUpdater.py
@@ -41,6 +41,8 @@ def __init__(self, slice_start_idx, test_path, lines, filename):
self.filename = filename
def copyFrom(self, source):
+ print(f"in copyFrom {source} -> {self.filename}")
+ print(f" file content before: {'\n'.join(self.lines)}")
lines_before = self.lines[: self.slice_start_idx + 1]
self.lines = self.lines[self.slice_start_idx + 1 :]
slice_end_idx = None
@@ -52,11 +54,15 @@ def copyFrom(self, source):
lines_after = self.lines[slice_end_idx:]
else:
lines_after = []
+ with open(source, "r") as f:
+ print(f" inserting file content: {f.read()}")
with open(source, "r") as f:
new_lines = lines_before + f.readlines() + lines_after
with open(self.test_path, "w") as f:
for l in new_lines:
+ print(f" writing out line: {l}")
f.write(l)
+ print("end copyFrom")
def __str__(self):
return f"slice {self.filename} in {self.test_path}"
>From 212c4504f44f9074247412b703f73c10daf85690 Mon Sep 17 00:00:00 2001
From: "Henrik G. Olsson" <h_olsson at apple.com>
Date: Thu, 12 Feb 2026 17:04:49 -0800
Subject: [PATCH 11/18] DNM: debug windows CI failure
---
llvm/utils/lit/lit/DiffUpdater.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/llvm/utils/lit/lit/DiffUpdater.py b/llvm/utils/lit/lit/DiffUpdater.py
index ae903e014af67..d4070fc9d4ebf 100644
--- a/llvm/utils/lit/lit/DiffUpdater.py
+++ b/llvm/utils/lit/lit/DiffUpdater.py
@@ -42,7 +42,8 @@ def __init__(self, slice_start_idx, test_path, lines, filename):
def copyFrom(self, source):
print(f"in copyFrom {source} -> {self.filename}")
- print(f" file content before: {'\n'.join(self.lines)}")
+ tmp_lines = '\n'.join(self.lines)
+ print(f" file content before: {tmp_lines}")
lines_before = self.lines[: self.slice_start_idx + 1]
self.lines = self.lines[self.slice_start_idx + 1 :]
slice_end_idx = None
>From b742d7e24bcebb4910e83f2bb8b30346d1ff1065 Mon Sep 17 00:00:00 2001
From: "Henrik G. Olsson" <h_olsson at apple.com>
Date: Thu, 12 Feb 2026 18:41:01 -0800
Subject: [PATCH 12/18] DNM: debug windows CI failure
---
llvm/utils/lit/lit/DiffUpdater.py | 31 ++++++++++++++++++++++++++-----
1 file changed, 26 insertions(+), 5 deletions(-)
diff --git a/llvm/utils/lit/lit/DiffUpdater.py b/llvm/utils/lit/lit/DiffUpdater.py
index d4070fc9d4ebf..c09630b154082 100644
--- a/llvm/utils/lit/lit/DiffUpdater.py
+++ b/llvm/utils/lit/lit/DiffUpdater.py
@@ -35,26 +35,41 @@ def __str__(self):
class SplitFileTarget:
def __init__(self, slice_start_idx, test_path, lines, filename):
+ print(f"create SplitFile {filename} - i: {slice_start_idx}")
self.slice_start_idx = slice_start_idx
self.test_path = test_path
self.lines = lines
+ print(f" rest of lines start")
+ print("\n".join(self.lines[: self.slice_start_idx + 1]))
+ print(f" rest of lines end")
self.filename = filename
def copyFrom(self, source):
print(f"in copyFrom {source} -> {self.filename}")
- tmp_lines = '\n'.join(self.lines)
- print(f" file content before: {tmp_lines}")
+ print(f" file content start")
+ print("\n".join(self.lines))
+ print(f" file content end")
lines_before = self.lines[: self.slice_start_idx + 1]
self.lines = self.lines[self.slice_start_idx + 1 :]
+ print(f" before lines start")
+ print("\n".join(lines_before))
+ print(f" before lines end")
+ print(f" rest of lines start")
+ print("\n".join(self.lines))
+ print(f" rest of lines end")
slice_end_idx = None
for i, l in enumerate(self.lines):
if SplitFileTarget._get_split_line_path(l) != None:
+ print(f" end at idx {i}: {l}")
slice_end_idx = i
break
if slice_end_idx is not None:
lines_after = self.lines[slice_end_idx:]
else:
lines_after = []
+ print(f" lines after start")
+ print("\n".join(lines_after))
+ print(f" lines after end")
with open(source, "r") as f:
print(f" inserting file content: {f.read()}")
with open(source, "r") as f:
@@ -128,8 +143,12 @@ def get_source_and_target(a, b, test_path, commands):
a_target = None
b_target = None
if split_target_dir:
- a_target = SplitFileTarget.create(a, commands, test_path, split_target_dir)
- b_target = SplitFileTarget.create(b, commands, test_path, split_target_dir)
+ a_target = SplitFileTarget.create(
+ a, commands, test_path, split_target_dir
+ )
+ b_target = SplitFileTarget.create(
+ b, commands, test_path, split_target_dir
+ )
if a_target and not b_target:
return b, a_target
if b_target and not a_target:
@@ -166,7 +185,9 @@ def diff_test_updater(result, test, commands):
[cmd, a, b] = args
if cmd != "diff":
return None
- res = get_source_and_target(a, b, pathlib.Path(test.getFilePath()), commands)
+ res = get_source_and_target(
+ a, b, pathlib.Path(test.getFilePath()), commands
+ )
if not res:
return f"update-diff-test: could not deduce source and target from {a} and {b}"
source, target = res
>From 2b2efa22518606f27a99bd0e9668982012692d7c Mon Sep 17 00:00:00 2001
From: "Henrik G. Olsson" <h_olsson at apple.com>
Date: Thu, 12 Feb 2026 19:37:45 -0800
Subject: [PATCH 13/18] DNM: debug windows CI failure
---
llvm/utils/lit/lit/DiffUpdater.py | 32 ++++++++++++++++++-------------
llvm/utils/lit/lit/display.py | 2 ++
2 files changed, 21 insertions(+), 13 deletions(-)
diff --git a/llvm/utils/lit/lit/DiffUpdater.py b/llvm/utils/lit/lit/DiffUpdater.py
index c09630b154082..9c38bc909bc1c 100644
--- a/llvm/utils/lit/lit/DiffUpdater.py
+++ b/llvm/utils/lit/lit/DiffUpdater.py
@@ -3,6 +3,8 @@
import shlex
import pathlib
+import time
+
"""
This file provides the `diff_test_updater` function, which is invoked on failed RUN lines when lit is executed with --update-tests.
It checks whether the failed command is `diff` and, if so, uses heuristics to determine which file is the checked-in reference file and which file is output from the test case.
@@ -39,46 +41,50 @@ def __init__(self, slice_start_idx, test_path, lines, filename):
self.slice_start_idx = slice_start_idx
self.test_path = test_path
self.lines = lines
- print(f" rest of lines start")
+ print(f"---- rest of lines start")
print("\n".join(self.lines[: self.slice_start_idx + 1]))
- print(f" rest of lines end")
+ print(f"---- rest of lines end")
self.filename = filename
def copyFrom(self, source):
print(f"in copyFrom {source} -> {self.filename}")
- print(f" file content start")
+ print(f"time start: {time.time()}")
+ print(f"---- file content start")
print("\n".join(self.lines))
- print(f" file content end")
+ print(f"---- file content end")
lines_before = self.lines[: self.slice_start_idx + 1]
self.lines = self.lines[self.slice_start_idx + 1 :]
- print(f" before lines start")
+ print(f"---- before lines start")
print("\n".join(lines_before))
- print(f" before lines end")
- print(f" rest of lines start")
+ print(f"---- before lines end")
+ print(f"---- rest of lines start")
print("\n".join(self.lines))
- print(f" rest of lines end")
+ print(f"---- rest of lines end")
slice_end_idx = None
+ print(f"---- checking line ")
for i, l in enumerate(self.lines):
+ print(f"-------- checking line: {l}")
if SplitFileTarget._get_split_line_path(l) != None:
- print(f" end at idx {i}: {l}")
+ print(f"------------ end at idx {i}: {l}")
slice_end_idx = i
break
if slice_end_idx is not None:
lines_after = self.lines[slice_end_idx:]
else:
lines_after = []
- print(f" lines after start")
+ print(f"---- lines after start")
print("\n".join(lines_after))
- print(f" lines after end")
+ print(f"---- lines after end")
with open(source, "r") as f:
- print(f" inserting file content: {f.read()}")
+ print(f"---- inserting file content: {f.read()}")
with open(source, "r") as f:
new_lines = lines_before + f.readlines() + lines_after
with open(self.test_path, "w") as f:
for l in new_lines:
- print(f" writing out line: {l}")
+ print(f"---- writing out line: {l}")
f.write(l)
print("end copyFrom")
+ print(f"time end: {time.time()}")
def __str__(self):
return f"slice {self.filename} in {self.test_path}"
diff --git a/llvm/utils/lit/lit/display.py b/llvm/utils/lit/lit/display.py
index 92dccae280f88..24fc10002f71c 100644
--- a/llvm/utils/lit/lit/display.py
+++ b/llvm/utils/lit/lit/display.py
@@ -4,6 +4,7 @@
from typing import Optional
from lit.Test import Test
+import time
def create_display(opts, tests, total_tests, workers):
if opts.print_result_after == "off" and not opts.useProgressBar:
@@ -153,6 +154,7 @@ def print_result(self, test):
print_result = shouldPrintInfo(self.opts.test_output, test)
# Show the test failure output, if requested.
if print_result:
+ print(f"time: {time.time()}")
if test.isFailure():
print("%s TEST '%s' FAILED %s" % ("*" * 20, test_name, "*" * 20))
out = test.result.output
>From f14de277b9192481ad74907f143874c4e23f531b Mon Sep 17 00:00:00 2001
From: "Henrik G. Olsson" <h_olsson at apple.com>
Date: Thu, 12 Feb 2026 20:31:41 -0800
Subject: [PATCH 14/18] DNM: debug windows CI failure
---
llvm/utils/lit/lit/DiffUpdater.py | 11 ++++++++++-
1 file changed, 10 insertions(+), 1 deletion(-)
diff --git a/llvm/utils/lit/lit/DiffUpdater.py b/llvm/utils/lit/lit/DiffUpdater.py
index 9c38bc909bc1c..3d3720860df58 100644
--- a/llvm/utils/lit/lit/DiffUpdater.py
+++ b/llvm/utils/lit/lit/DiffUpdater.py
@@ -79,10 +79,19 @@ def copyFrom(self, source):
print(f"---- inserting file content: {f.read()}")
with open(source, "r") as f:
new_lines = lines_before + f.readlines() + lines_after
+ print(f"---- writing: {self.test_path}")
with open(self.test_path, "w") as f:
for l in new_lines:
- print(f"---- writing out line: {l}")
+ print(f"-------- writing out line: {l}")
f.write(l)
+ with open(self.test_path, "r") as f:
+ print(f"---- comparing lines")
+ written_lines = f.readlines()
+ for a, b in zip(new_lines, written_lines):
+ print(f"-------- a: {a}")
+ print(f"-------- b: {b}")
+ if a != b:
+ print("------------ diff!")
print("end copyFrom")
print(f"time end: {time.time()}")
>From ccd27096b29789b036d4419c0003e6799ae80daa Mon Sep 17 00:00:00 2001
From: "Henrik G. Olsson" <h_olsson at apple.com>
Date: Thu, 12 Feb 2026 22:30:26 -0800
Subject: [PATCH 15/18] DNM: debug windows CI failure
---
llvm/utils/lit/lit/TestRunner.py | 30 +++++++++++++++++++++++-------
1 file changed, 23 insertions(+), 7 deletions(-)
diff --git a/llvm/utils/lit/lit/TestRunner.py b/llvm/utils/lit/lit/TestRunner.py
index 9e5c7d253a236..f7fc1ec2bf955 100644
--- a/llvm/utils/lit/lit/TestRunner.py
+++ b/llvm/utils/lit/lit/TestRunner.py
@@ -197,7 +197,7 @@ def __init__(
self.outputFiles = list(outputFiles)
-def executeShCmd(cmd, shenv, results, timeout=0):
+def executeShCmd(cmd, shenv, results, timeout=0, prev_updated_file=None):
"""
Wrapper around _executeShCmd that handles
timeout
@@ -208,7 +208,7 @@ def executeShCmd(cmd, shenv, results, timeout=0):
if timeout > 0:
timeoutHelper.startTimer()
try:
- finalExitCode = _executeShCmd(cmd, shenv, results, timeoutHelper)
+ finalExitCode = _executeShCmd(cmd, shenv, results, timeoutHelper, prev_updated_file)
except InternalShellError:
e = sys.exc_info()[1]
finalExitCode = 127
@@ -749,7 +749,7 @@ def _replaceReadFile(match):
return arguments
-def _executeShCmd(cmd, shenv, results, timeoutHelper):
+def _executeShCmd(cmd, shenv, results, timeoutHelper, prev_updated_file=None):
if timeoutHelper.timeoutReached():
# Prevent further recursion if the timeout has been hit
# as we should try avoid launching more processes.
@@ -996,6 +996,11 @@ def _executeShCmd(cmd, shenv, results, timeoutHelper):
old_umask = -1
if cmd_shenv.umask != -1:
old_umask = os.umask(cmd_shenv.umask)
+ if prev_updated_file:
+ with open(prev_updated_file, 'r') as f:
+ print(f"prev updated file before Popen: {prev_updated_file} start")
+ print(f.read())
+ print(f"prev updated file before Popen end\n")
procs.append(
subprocess.Popen(
args,
@@ -1189,7 +1194,7 @@ def formatOutput(title, data, limit=None):
# function), out contains only stdout from the script, err contains only stderr
# from the script, and there is no execution trace.
def executeScriptInternal(
- test, litConfig, tmpBase, commands, cwd, debug=True
+ test, litConfig, tmpBase, commands, cwd, debug=True, prev_updated_file=None
) -> Tuple[str, str, int, Optional[str], Optional[str]]:
cmds = []
update_output = None
@@ -1231,7 +1236,7 @@ def executeScriptInternal(
shenv.env["LIT_CURRENT_TESTCASE"] = test.getFullName()
exitCode, timeoutInfo = executeShCmd(
- cmd, shenv, results, timeout=litConfig.maxIndividualTestTime
+ cmd, shenv, results, timeout=litConfig.maxIndividualTestTime, prev_updated_file=prev_updated_file
)
out = err = ""
@@ -2337,9 +2342,11 @@ def parseIntegratedTestScript(test, additional_parsers=[], require_script=True):
def _runShTest(test, litConfig, useExternalSh, script, tmpBase) -> lit.Test.Result:
# Always returns the tuple (out, err, exitCode, timeoutInfo, status).
+ test_updates = []
def runOnce(
execdir,
) -> Tuple[str, str, int, Optional[str], Test.ResultCode, Optional[str]]:
+ print("--runOnce--\n")
# script is modified below (for litConfig.per_test_coverage, and for
# %dbg expansions). runOnce can be called multiple times, but applying
# the modifications multiple times can corrupt script, so always modify
@@ -2370,8 +2377,18 @@ def runOnce(
if useExternalSh:
res = executeScript(test, litConfig, tmpBase, scriptCopy, execdir)
else:
+ prev_updated_file = None
+ if test_updates:
+ prev_test_update = test_updates[-1]
+ if prev_test_update and "copied" in prev_test_update:
+ prev_updated_file = prev_test_update.split(" ")[-1]
+ if prev_updated_file:
+ with open(prev_updated_file, 'r') as f:
+ print(f"prev updated file: {prev_updated_file} start")
+ print(f.read())
+ print(f"prev updated file end\n")
res = executeScriptInternal(
- test, litConfig, tmpBase, scriptCopy, execdir
+ test, litConfig, tmpBase, scriptCopy, execdir, prev_updated_file=prev_updated_file
)
except ScriptFatal as e:
out = f"# " + "\n# ".join(str(e).splitlines()) + "\n"
@@ -2393,7 +2410,6 @@ def runOnce(
# Re-run failed tests up to test.allowed_retries times.
execdir = os.path.dirname(test.getExecPath())
attempts = test.allowed_retries + 1
- test_updates = []
for i in range(attempts):
res = runOnce(execdir)
out, err, exitCode, timeoutInfo, status, test_update_output = res
>From 56a8639c2bfe8d820cc2118138488fb756b6b83c Mon Sep 17 00:00:00 2001
From: "Henrik G. Olsson" <h_olsson at apple.com>
Date: Thu, 12 Feb 2026 23:13:44 -0800
Subject: [PATCH 16/18] DNM: debug windows CI failure
---
llvm/utils/lit/lit/TestRunner.py | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/llvm/utils/lit/lit/TestRunner.py b/llvm/utils/lit/lit/TestRunner.py
index f7fc1ec2bf955..ba595ce106ce8 100644
--- a/llvm/utils/lit/lit/TestRunner.py
+++ b/llvm/utils/lit/lit/TestRunner.py
@@ -209,7 +209,9 @@ def executeShCmd(cmd, shenv, results, timeout=0, prev_updated_file=None):
timeoutHelper.startTimer()
try:
finalExitCode = _executeShCmd(cmd, shenv, results, timeoutHelper, prev_updated_file)
+ print(f"finalExitCode: {finalExitCode}")
except InternalShellError:
+ print("InternalShellError")
e = sys.exc_info()[1]
finalExitCode = 127
results.append(
@@ -1001,6 +1003,7 @@ def _executeShCmd(cmd, shenv, results, timeoutHelper, prev_updated_file=None):
print(f"prev updated file before Popen: {prev_updated_file} start")
print(f.read())
print(f"prev updated file before Popen end\n")
+ print(f"will run Popen: {' '.join(args)}")
procs.append(
subprocess.Popen(
args,
@@ -1113,6 +1116,9 @@ def _executeShCmd(cmd, shenv, results, timeoutHelper, prev_updated_file=None):
if data is not None:
output_files.append((name, path, data))
+ print(f"appending result (cmd): {cmd.commands[i]}")
+ print(f"appending result (out): {out}")
+ print(f"appending result (err): {err}")
results.append(
ShellCommandResult(
cmd.commands[i],
@@ -1240,7 +1246,9 @@ def executeScriptInternal(
)
out = err = ""
+ print("start enumerate(results)")
for i, result in enumerate(results):
+ print(f"\nin enumerate(results): {i}\n\n")
if not debug:
out += result.stdout
err += result.stderr
@@ -1333,6 +1341,7 @@ def executeScriptInternal(
raise TestUpdaterException(output)
if update_output:
break
+ print("end enumerate(results)")
return out, err, exitCode, timeoutInfo, update_output
>From d9240b04a48178a312b4b9bf25bdd0aa477ca88f Mon Sep 17 00:00:00 2001
From: "Henrik G. Olsson" <h_olsson at apple.com>
Date: Sat, 14 Feb 2026 12:01:29 -0800
Subject: [PATCH 17/18] DNM: disable non-lit test suites
---
bolt/test/Unit/lit.cfg.py | 1 +
bolt/test/lit.cfg.py | 1 +
clang-tools-extra/clangd/test/lit.cfg.py | 1 +
clang-tools-extra/clangd/unittests/lit.cfg.py | 1 +
clang-tools-extra/include-cleaner/test/Unit/lit.cfg.py | 1 +
clang-tools-extra/include-cleaner/test/lit.cfg.py | 1 +
clang-tools-extra/test/Unit/lit.cfg.py | 1 +
clang-tools-extra/test/lit.cfg.py | 1 +
clang/test/Unit/lit.cfg.py | 1 +
clang/test/lit.cfg.py | 1 +
clang/utils/perf-training/lit.cfg | 1 +
compiler-rt/test/builtins/Unit/lit.cfg.py | 1 +
compiler-rt/test/builtins/lit.cfg.py | 1 +
compiler-rt/test/fuzzer/lit.cfg.py | 1 +
cross-project-tests/lit.cfg.py | 1 +
flang-rt/test/NonGtestUnit/lit.cfg.py | 1 +
flang-rt/test/Unit/lit.cfg.py | 1 +
flang-rt/test/lit.cfg.py | 1 +
flang/test/NonGtestUnit/lit.cfg.py | 1 +
flang/test/Unit/lit.cfg.py | 1 +
flang/test/lit.cfg.py | 1 +
libcxx/test/lit.cfg.py | 1 +
libcxxabi/test/lit.cfg.py | 1 +
libunwind/test/lit.cfg.py | 1 +
lld/test/Unit/lit.cfg.py | 1 +
lld/test/lit.cfg.py | 1 +
lldb/test/API/lit.cfg.py | 1 +
lldb/test/Shell/lit.cfg.py | 1 +
lldb/test/Unit/lit.cfg.py | 1 +
lldb/test/lit.cfg.py | 1 +
llvm/test/Unit/lit.cfg.py | 1 +
llvm/test/lit.cfg.py | 1 +
llvm/utils/lit/examples/many-tests/lit.cfg | 1 +
llvm/utils/mlgo-utils/tests/lit.cfg | 1 +
mlir/examples/standalone/test/lit.cfg.py | 1 +
mlir/test/Unit/lit.cfg.py | 1 +
mlir/test/lit.cfg.py | 1 +
offload/test/lit.cfg | 1 +
offload/test/unit/lit.cfg.py | 1 +
openmp/libompd/test/lit.cfg | 1 +
openmp/runtime/test/Unit/lit.cfg.py | 1 +
openmp/runtime/test/lit.cfg | 1 +
openmp/tools/archer/tests/lit.cfg | 1 +
openmp/tools/multiplex/tests/lit.cfg | 1 +
openmp/tools/omptest/test/lit.cfg | 1 +
orc-rt/test/lit.cfg.py | 1 +
orc-rt/test/unit/lit.cfg.py | 1 +
polly/test/Unit/lit.cfg | 1 +
polly/test/UnitIsl/lit.cfg | 1 +
polly/test/lit.cfg | 1 +
50 files changed, 50 insertions(+)
diff --git a/bolt/test/Unit/lit.cfg.py b/bolt/test/Unit/lit.cfg.py
index e62ffe7f42bed..a2861315a0500 100644
--- a/bolt/test/Unit/lit.cfg.py
+++ b/bolt/test/Unit/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
# Configuration file for the 'lit' test runner.
diff --git a/bolt/test/lit.cfg.py b/bolt/test/lit.cfg.py
index 3299051db4983..06e353c027ba6 100644
--- a/bolt/test/lit.cfg.py
+++ b/bolt/test/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
import os
import platform
diff --git a/clang-tools-extra/clangd/test/lit.cfg.py b/clang-tools-extra/clangd/test/lit.cfg.py
index bd721c41861b2..acff8f7913741 100644
--- a/clang-tools-extra/clangd/test/lit.cfg.py
+++ b/clang-tools-extra/clangd/test/lit.cfg.py
@@ -1,3 +1,4 @@
+config.unsupported = True
import os
import lit.llvm
diff --git a/clang-tools-extra/clangd/unittests/lit.cfg.py b/clang-tools-extra/clangd/unittests/lit.cfg.py
index 666e9879bb4ad..a916a294d292c 100644
--- a/clang-tools-extra/clangd/unittests/lit.cfg.py
+++ b/clang-tools-extra/clangd/unittests/lit.cfg.py
@@ -1,3 +1,4 @@
+config.unsupported = True
import lit.formats
import lit.util
diff --git a/clang-tools-extra/include-cleaner/test/Unit/lit.cfg.py b/clang-tools-extra/include-cleaner/test/Unit/lit.cfg.py
index c4454df06b386..0ee9091831e77 100644
--- a/clang-tools-extra/include-cleaner/test/Unit/lit.cfg.py
+++ b/clang-tools-extra/include-cleaner/test/Unit/lit.cfg.py
@@ -1,3 +1,4 @@
+config.unsupported = True
import lit.formats
config.name = "clangIncludeCleaner Unit Tests"
diff --git a/clang-tools-extra/include-cleaner/test/lit.cfg.py b/clang-tools-extra/include-cleaner/test/lit.cfg.py
index 52f81bfa78cb8..0be65aca22712 100644
--- a/clang-tools-extra/include-cleaner/test/lit.cfg.py
+++ b/clang-tools-extra/include-cleaner/test/lit.cfg.py
@@ -1,3 +1,4 @@
+config.unsupported = True
import os
import lit.llvm
diff --git a/clang-tools-extra/test/Unit/lit.cfg.py b/clang-tools-extra/test/Unit/lit.cfg.py
index 0254829ed67e4..84e17a2500cc4 100644
--- a/clang-tools-extra/test/Unit/lit.cfg.py
+++ b/clang-tools-extra/test/Unit/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
import platform
diff --git a/clang-tools-extra/test/lit.cfg.py b/clang-tools-extra/test/lit.cfg.py
index c39ea29329674..0770159282e61 100644
--- a/clang-tools-extra/test/lit.cfg.py
+++ b/clang-tools-extra/test/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
import os
import shlex
diff --git a/clang/test/Unit/lit.cfg.py b/clang/test/Unit/lit.cfg.py
index ebe35a10e7f30..f16291ccc5f3f 100644
--- a/clang/test/Unit/lit.cfg.py
+++ b/clang/test/Unit/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
# Configuration file for the 'lit' test runner.
diff --git a/clang/test/lit.cfg.py b/clang/test/lit.cfg.py
index c5e03e8e88aad..7ab210d14b3d0 100644
--- a/clang/test/lit.cfg.py
+++ b/clang/test/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
import os
import platform
diff --git a/clang/utils/perf-training/lit.cfg b/clang/utils/perf-training/lit.cfg
index 3f6089b7139a7..112a542347fc5 100644
--- a/clang/utils/perf-training/lit.cfg
+++ b/clang/utils/perf-training/lit.cfg
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
from lit import Test
import lit.formats
diff --git a/compiler-rt/test/builtins/Unit/lit.cfg.py b/compiler-rt/test/builtins/Unit/lit.cfg.py
index 59da054848f3c..18383ba9853f1 100644
--- a/compiler-rt/test/builtins/Unit/lit.cfg.py
+++ b/compiler-rt/test/builtins/Unit/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
import os
import platform
diff --git a/compiler-rt/test/builtins/lit.cfg.py b/compiler-rt/test/builtins/lit.cfg.py
index 44c36212ee3fd..8bbf524691b98 100644
--- a/compiler-rt/test/builtins/lit.cfg.py
+++ b/compiler-rt/test/builtins/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
import os
diff --git a/compiler-rt/test/fuzzer/lit.cfg.py b/compiler-rt/test/fuzzer/lit.cfg.py
index 1689f53d0b021..ba475838ef49d 100644
--- a/compiler-rt/test/fuzzer/lit.cfg.py
+++ b/compiler-rt/test/fuzzer/lit.cfg.py
@@ -1,3 +1,4 @@
+config.unsupported = True
import lit.formats
import sys
import os
diff --git a/cross-project-tests/lit.cfg.py b/cross-project-tests/lit.cfg.py
index d702c17f2c838..3ed65b3448b49 100644
--- a/cross-project-tests/lit.cfg.py
+++ b/cross-project-tests/lit.cfg.py
@@ -1,3 +1,4 @@
+config.unsupported = True
import os
import platform
import re
diff --git a/flang-rt/test/NonGtestUnit/lit.cfg.py b/flang-rt/test/NonGtestUnit/lit.cfg.py
index 8da36adc74a22..7d9c5526185c7 100644
--- a/flang-rt/test/NonGtestUnit/lit.cfg.py
+++ b/flang-rt/test/NonGtestUnit/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
import os
diff --git a/flang-rt/test/Unit/lit.cfg.py b/flang-rt/test/Unit/lit.cfg.py
index 516bc653f413f..1cd54ab714803 100644
--- a/flang-rt/test/Unit/lit.cfg.py
+++ b/flang-rt/test/Unit/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
import os
diff --git a/flang-rt/test/lit.cfg.py b/flang-rt/test/lit.cfg.py
index 067ca5e5f1142..bf75141bdbe03 100644
--- a/flang-rt/test/lit.cfg.py
+++ b/flang-rt/test/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
import shlex
import lit.util
diff --git a/flang/test/NonGtestUnit/lit.cfg.py b/flang/test/NonGtestUnit/lit.cfg.py
index 407b393d5f93d..090a3ff8f73f9 100644
--- a/flang/test/NonGtestUnit/lit.cfg.py
+++ b/flang/test/NonGtestUnit/lit.cfg.py
@@ -1,3 +1,4 @@
+config.unsupported = True
import os
import lit.Test
diff --git a/flang/test/Unit/lit.cfg.py b/flang/test/Unit/lit.cfg.py
index c82ac1c5aed45..499ae503c93ee 100644
--- a/flang/test/Unit/lit.cfg.py
+++ b/flang/test/Unit/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
# Configuration file for the 'lit' test runner.
diff --git a/flang/test/lit.cfg.py b/flang/test/lit.cfg.py
index 3a87f9ea06803..e8739fbe37495 100644
--- a/flang/test/lit.cfg.py
+++ b/flang/test/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
import os
import platform
diff --git a/libcxx/test/lit.cfg.py b/libcxx/test/lit.cfg.py
index bb05526877479..5440349a42d60 100644
--- a/libcxx/test/lit.cfg.py
+++ b/libcxx/test/lit.cfg.py
@@ -1,4 +1,5 @@
# All the Lit configuration is handled in the site configs -- this file is only
+config.unsupported = True
# left as a canary to catch invocations of Lit that do not go through llvm-lit.
#
# Invocations that go through llvm-lit will automatically use the right Lit
diff --git a/libcxxabi/test/lit.cfg.py b/libcxxabi/test/lit.cfg.py
index fb36c8d4aaa32..7203ee37f8ac8 100644
--- a/libcxxabi/test/lit.cfg.py
+++ b/libcxxabi/test/lit.cfg.py
@@ -1,4 +1,5 @@
# All the Lit configuration is handled in the site configs -- this file is only
+config.unsupported = True
# left as a canary to catch invocations of Lit that do not go through llvm-lit.
#
# Invocations that go through llvm-lit will automatically use the right Lit
diff --git a/libunwind/test/lit.cfg.py b/libunwind/test/lit.cfg.py
index 51e85e489db01..4e26cf867c0d8 100644
--- a/libunwind/test/lit.cfg.py
+++ b/libunwind/test/lit.cfg.py
@@ -1,4 +1,5 @@
# All the Lit configuration is handled in the site configs -- this file is only
+config.unsupported = True
# left as a canary to catch invocations of Lit that do not go through llvm-lit.
#
# Invocations that go through llvm-lit will automatically use the right Lit
diff --git a/lld/test/Unit/lit.cfg.py b/lld/test/Unit/lit.cfg.py
index 1cf890a05cb28..f23a4701c6d6a 100644
--- a/lld/test/Unit/lit.cfg.py
+++ b/lld/test/Unit/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
# Configuration file for the 'lit' test runner.
diff --git a/lld/test/lit.cfg.py b/lld/test/lit.cfg.py
index 39c3d0aa36bfb..6f20e19336398 100644
--- a/lld/test/lit.cfg.py
+++ b/lld/test/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
import os
import platform
diff --git a/lldb/test/API/lit.cfg.py b/lldb/test/API/lit.cfg.py
index f2a14d1475385..4879a1a485b34 100644
--- a/lldb/test/API/lit.cfg.py
+++ b/lldb/test/API/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
# Configuration file for the 'lit' test runner.
diff --git a/lldb/test/Shell/lit.cfg.py b/lldb/test/Shell/lit.cfg.py
index cdc0cfe51f7c6..d4e08796f7299 100644
--- a/lldb/test/Shell/lit.cfg.py
+++ b/lldb/test/Shell/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
import json
import os
diff --git a/lldb/test/Unit/lit.cfg.py b/lldb/test/Unit/lit.cfg.py
index 681e3b19dce34..679919b9532c8 100644
--- a/lldb/test/Unit/lit.cfg.py
+++ b/lldb/test/Unit/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
# Configuration file for the 'lit' test runner.
diff --git a/lldb/test/lit.cfg.py b/lldb/test/lit.cfg.py
index eefc32aabd16d..d8a82d7fa58e9 100644
--- a/lldb/test/lit.cfg.py
+++ b/lldb/test/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
import os
diff --git a/llvm/test/Unit/lit.cfg.py b/llvm/test/Unit/lit.cfg.py
index e29fd76bd8dcc..d0df8a7e841db 100644
--- a/llvm/test/Unit/lit.cfg.py
+++ b/llvm/test/Unit/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
# Configuration file for the 'lit' test runner.
diff --git a/llvm/test/lit.cfg.py b/llvm/test/lit.cfg.py
index 79b78ffeb2dab..121dc0e2f2a0e 100644
--- a/llvm/test/lit.cfg.py
+++ b/llvm/test/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
# Configuration file for the 'lit' test runner.
diff --git a/llvm/utils/lit/examples/many-tests/lit.cfg b/llvm/utils/lit/examples/many-tests/lit.cfg
index da01c935c8e66..84c09fd70e73b 100644
--- a/llvm/utils/lit/examples/many-tests/lit.cfg
+++ b/llvm/utils/lit/examples/many-tests/lit.cfg
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
import sys
import os
diff --git a/llvm/utils/mlgo-utils/tests/lit.cfg b/llvm/utils/mlgo-utils/tests/lit.cfg
index 0f6137e5e9138..503c5fef1b01c 100644
--- a/llvm/utils/mlgo-utils/tests/lit.cfg
+++ b/llvm/utils/mlgo-utils/tests/lit.cfg
@@ -1,3 +1,4 @@
+config.unsupported = True
import os
import lit.formats
diff --git a/mlir/examples/standalone/test/lit.cfg.py b/mlir/examples/standalone/test/lit.cfg.py
index 89cdd6889a1f2..670119fcf2cfd 100644
--- a/mlir/examples/standalone/test/lit.cfg.py
+++ b/mlir/examples/standalone/test/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
import os
import platform
diff --git a/mlir/test/Unit/lit.cfg.py b/mlir/test/Unit/lit.cfg.py
index 1898b72adf002..dd22b107666bf 100644
--- a/mlir/test/Unit/lit.cfg.py
+++ b/mlir/test/Unit/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
# Configuration file for the 'lit' test runner.
diff --git a/mlir/test/lit.cfg.py b/mlir/test/lit.cfg.py
index 9c5bee169efe0..0f7fd03e5d2d5 100644
--- a/mlir/test/lit.cfg.py
+++ b/mlir/test/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
import os
import platform
diff --git a/offload/test/lit.cfg b/offload/test/lit.cfg
index 0d5a9c95c1d95..d05b8461f80bc 100644
--- a/offload/test/lit.cfg
+++ b/offload/test/lit.cfg
@@ -1,4 +1,5 @@
# -*- Python -*- vim: set ft=python ts=4 sw=4 expandtab tw=79:
+config.unsupported = True
# Configuration file for the 'lit' test runner.
import os
diff --git a/offload/test/unit/lit.cfg.py b/offload/test/unit/lit.cfg.py
index 5c68f6be0009a..8544c674bf81e 100644
--- a/offload/test/unit/lit.cfg.py
+++ b/offload/test/unit/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
# Configuration file for the 'lit' test runner.
diff --git a/openmp/libompd/test/lit.cfg b/openmp/libompd/test/lit.cfg
index df881d026c899..88cfea503ad7e 100644
--- a/openmp/libompd/test/lit.cfg
+++ b/openmp/libompd/test/lit.cfg
@@ -1,4 +1,5 @@
# -*- Python -*- vim: set ft=python ts=4 sw=4 expandtab tw=79:
+config.unsupported = True
# Configuration file for the 'lit' test runner.
import os
diff --git a/openmp/runtime/test/Unit/lit.cfg.py b/openmp/runtime/test/Unit/lit.cfg.py
index 01bd3d961bf00..4d7c7998e29b1 100644
--- a/openmp/runtime/test/Unit/lit.cfg.py
+++ b/openmp/runtime/test/Unit/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
# Configuration file for the 'lit' test runner.
diff --git a/openmp/runtime/test/lit.cfg b/openmp/runtime/test/lit.cfg
index f35794f09f641..93fcf3bf6d38f 100644
--- a/openmp/runtime/test/lit.cfg
+++ b/openmp/runtime/test/lit.cfg
@@ -1,4 +1,5 @@
# -*- Python -*- vim: set ft=python ts=4 sw=4 expandtab tw=79:
+config.unsupported = True
# Configuration file for the 'lit' test runner.
import os
diff --git a/openmp/tools/archer/tests/lit.cfg b/openmp/tools/archer/tests/lit.cfg
index f1e0158277a08..a1c59199ad792 100644
--- a/openmp/tools/archer/tests/lit.cfg
+++ b/openmp/tools/archer/tests/lit.cfg
@@ -1,4 +1,5 @@
# -*- Python -*- vim: set ft=python ts=4 sw=4 expandtab tw=79:
+config.unsupported = True
# Configuration file for the 'lit' test runner.
import os
diff --git a/openmp/tools/multiplex/tests/lit.cfg b/openmp/tools/multiplex/tests/lit.cfg
index 24e7a5be4a8e0..5af039d16ad03 100644
--- a/openmp/tools/multiplex/tests/lit.cfg
+++ b/openmp/tools/multiplex/tests/lit.cfg
@@ -1,4 +1,5 @@
# -*- Python -*- vim: set ft=python ts=4 sw=4 expandtab tw=79:
+config.unsupported = True
# Configuration file for the 'lit' test runner.
import os
diff --git a/openmp/tools/omptest/test/lit.cfg b/openmp/tools/omptest/test/lit.cfg
index 69c401aed83b8..b3ef024351444 100644
--- a/openmp/tools/omptest/test/lit.cfg
+++ b/openmp/tools/omptest/test/lit.cfg
@@ -1,4 +1,5 @@
# -*- Python -*- vim: set ft=python ts=4 sw=4 expandtab tw=79:
+config.unsupported = True
# Configuration file for the 'lit' test runner.
import os
diff --git a/orc-rt/test/lit.cfg.py b/orc-rt/test/lit.cfg.py
index 759d96e613978..b59c1d2afa410 100644
--- a/orc-rt/test/lit.cfg.py
+++ b/orc-rt/test/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
import os
diff --git a/orc-rt/test/unit/lit.cfg.py b/orc-rt/test/unit/lit.cfg.py
index af4b8d5982915..d6e4d4cfd820d 100644
--- a/orc-rt/test/unit/lit.cfg.py
+++ b/orc-rt/test/unit/lit.cfg.py
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
# Configuration file for the 'lit' test runner.
diff --git a/polly/test/Unit/lit.cfg b/polly/test/Unit/lit.cfg
index 21d7bc4ab25c5..7c0dfbddc1a11 100644
--- a/polly/test/Unit/lit.cfg
+++ b/polly/test/Unit/lit.cfg
@@ -1,4 +1,5 @@
# -*- Python -*-
+config.unsupported = True
# Configuration file for the 'lit' test runner.
diff --git a/polly/test/UnitIsl/lit.cfg b/polly/test/UnitIsl/lit.cfg
index 4b68f1460c3d8..4f0acfd428f5a 100644
--- a/polly/test/UnitIsl/lit.cfg
+++ b/polly/test/UnitIsl/lit.cfg
@@ -1,4 +1,5 @@
# -*clang- Python -*-
+config.unsupported = True
import os
import platform
diff --git a/polly/test/lit.cfg b/polly/test/lit.cfg
index 075ebdacbdc94..04dd680613866 100644
--- a/polly/test/lit.cfg
+++ b/polly/test/lit.cfg
@@ -1,4 +1,5 @@
# -*clang- Python -*-
+config.unsupported = True
import os
import platform
>From 820252a1bf079c6a455fffb93839874ac8dbd756 Mon Sep 17 00:00:00 2001
From: "Henrik G. Olsson" <h_olsson at apple.com>
Date: Sat, 14 Feb 2026 12:03:58 -0800
Subject: [PATCH 18/18] DNM: remove other lit tests
---
llvm/utils/lit/tests/allow-retries.py | 124 --
llvm/utils/lit/tests/boolean-parsing.py | 4 -
.../utils/lit/tests/custom-result-category.py | 15 -
llvm/utils/lit/tests/discovery.py | 214 ----
llvm/utils/lit/tests/escape-color.py | 4 -
llvm/utils/lit/tests/filter-failed-delete.py | 16 -
llvm/utils/lit/tests/filter-failed-rerun.py | 18 -
llvm/utils/lit/tests/filter-failed.py | 23 -
.../utils/lit/tests/googletest-cmd-wrapper.py | 7 -
llvm/utils/lit/tests/googletest-crash.py | 26 -
.../lit/tests/googletest-detect-duplicate.py | 12 -
.../lit/tests/googletest-discovery-failed.py | 10 -
...-format-respect-gtest-sharding-env-vars.py | 18 -
llvm/utils/lit/tests/googletest-format.py | 42 -
.../utils/lit/tests/googletest-no-sharding.py | 43 -
llvm/utils/lit/tests/googletest-prefix.py | 11 -
.../lit/tests/googletest-sanitizer-error.py | 31 -
llvm/utils/lit/tests/googletest-timeout.py | 58 -
llvm/utils/lit/tests/ignore-fail.py | 20 -
llvm/utils/lit/tests/lit-opts.py | 33 -
llvm/utils/lit/tests/lld-features.py | 6 -
llvm/utils/lit/tests/max-failures.py | 28 -
llvm/utils/lit/tests/max-time.py | 9 -
llvm/utils/lit/tests/parallelism-groups.py | 18 -
llvm/utils/lit/tests/pass-test-update.py | 34 -
.../lit/tests/per-test-coverage-by-lit-cfg.py | 24 -
llvm/utils/lit/tests/per-test-coverage.py | 24 -
llvm/utils/lit/tests/print-relative-path.py | 18 -
llvm/utils/lit/tests/progress-bar.py | 14 -
llvm/utils/lit/tests/reorder.py | 22 -
llvm/utils/lit/tests/selecting.py | 113 --
llvm/utils/lit/tests/shell-parsing.py | 3 -
llvm/utils/lit/tests/show-result-codes.py | 21 -
llvm/utils/lit/tests/show-used-features.py | 9 -
llvm/utils/lit/tests/shtest-cat.py | 23 -
llvm/utils/lit/tests/shtest-define.py | 168 ---
llvm/utils/lit/tests/shtest-encoding.py | 3 -
llvm/utils/lit/tests/shtest-env-negative.py | 49 -
llvm/utils/lit/tests/shtest-env-path.py | 13 -
llvm/utils/lit/tests/shtest-env-positive.py | 81 --
llvm/utils/lit/tests/shtest-export.py | 12 -
.../lit/tests/shtest-external-shell-kill.py | 36 -
llvm/utils/lit/tests/shtest-format-argv0.py | 13 -
llvm/utils/lit/tests/shtest-format.py | 189 ---
llvm/utils/lit/tests/shtest-glob.py | 13 -
llvm/utils/lit/tests/shtest-if-else.py | 15 -
llvm/utils/lit/tests/shtest-inject.py | 44 -
.../lit/tests/shtest-keyword-parse-errors.py | 15 -
llvm/utils/lit/tests/shtest-not-posix.py | 13 -
llvm/utils/lit/tests/shtest-not.py | 190 ---
.../utils/lit/tests/shtest-output-printing.py | 45 -
llvm/utils/lit/tests/shtest-pushd-popd.py | 25 -
.../lit/tests/shtest-readfile-external.py | 25 -
llvm/utils/lit/tests/shtest-readfile.py | 28 -
.../tests/shtest-recursive-substitution.py | 27 -
llvm/utils/lit/tests/shtest-run-at-line.py | 111 --
llvm/utils/lit/tests/shtest-shell-symlinks.py | 9 -
llvm/utils/lit/tests/shtest-shell.py | 637 ----------
llvm/utils/lit/tests/shtest-timeout.py | 80 --
.../lit/tests/shtest-ulimit-nondarwin.py | 21 -
llvm/utils/lit/tests/shtest-ulimit.py | 27 -
llvm/utils/lit/tests/shtest-umask.py | 21 -
llvm/utils/lit/tests/substitutions.py | 7 -
llvm/utils/lit/tests/test-data-micro.py | 21 -
llvm/utils/lit/tests/test-data.py | 13 -
.../lit/tests/test-output-micro-resultdb.py | 63 -
llvm/utils/lit/tests/test-output-micro.py | 51 -
llvm/utils/lit/tests/test-output-resultdb.py | 44 -
llvm/utils/lit/tests/test-output.py | 20 -
llvm/utils/lit/tests/time-tests.py | 15 -
llvm/utils/lit/tests/timeout-hang.py | 36 -
llvm/utils/lit/tests/unique-output-file.py | 22 -
llvm/utils/lit/tests/unittest-adaptor.py | 17 -
llvm/utils/lit/tests/unparsed-requirements.py | 38 -
llvm/utils/lit/tests/usage.py | 7 -
llvm/utils/lit/tests/use-llvm-tool.py | 40 -
llvm/utils/lit/tests/verbosity.py | 1130 -----------------
llvm/utils/lit/tests/windows-pools.py | 27 -
llvm/utils/lit/tests/xfail-cl.py | 65 -
.../xunit-output-report-failures-only.py | 12 -
llvm/utils/lit/tests/xunit-output.py | 27 -
81 files changed, 4660 deletions(-)
delete mode 100644 llvm/utils/lit/tests/allow-retries.py
delete mode 100644 llvm/utils/lit/tests/boolean-parsing.py
delete mode 100644 llvm/utils/lit/tests/custom-result-category.py
delete mode 100755 llvm/utils/lit/tests/discovery.py
delete mode 100644 llvm/utils/lit/tests/escape-color.py
delete mode 100644 llvm/utils/lit/tests/filter-failed-delete.py
delete mode 100644 llvm/utils/lit/tests/filter-failed-rerun.py
delete mode 100644 llvm/utils/lit/tests/filter-failed.py
delete mode 100644 llvm/utils/lit/tests/googletest-cmd-wrapper.py
delete mode 100644 llvm/utils/lit/tests/googletest-crash.py
delete mode 100644 llvm/utils/lit/tests/googletest-detect-duplicate.py
delete mode 100644 llvm/utils/lit/tests/googletest-discovery-failed.py
delete mode 100644 llvm/utils/lit/tests/googletest-format-respect-gtest-sharding-env-vars.py
delete mode 100644 llvm/utils/lit/tests/googletest-format.py
delete mode 100644 llvm/utils/lit/tests/googletest-no-sharding.py
delete mode 100644 llvm/utils/lit/tests/googletest-prefix.py
delete mode 100644 llvm/utils/lit/tests/googletest-sanitizer-error.py
delete mode 100644 llvm/utils/lit/tests/googletest-timeout.py
delete mode 100644 llvm/utils/lit/tests/ignore-fail.py
delete mode 100644 llvm/utils/lit/tests/lit-opts.py
delete mode 100644 llvm/utils/lit/tests/lld-features.py
delete mode 100644 llvm/utils/lit/tests/max-failures.py
delete mode 100644 llvm/utils/lit/tests/max-time.py
delete mode 100644 llvm/utils/lit/tests/parallelism-groups.py
delete mode 100644 llvm/utils/lit/tests/pass-test-update.py
delete mode 100644 llvm/utils/lit/tests/per-test-coverage-by-lit-cfg.py
delete mode 100644 llvm/utils/lit/tests/per-test-coverage.py
delete mode 100644 llvm/utils/lit/tests/print-relative-path.py
delete mode 100644 llvm/utils/lit/tests/progress-bar.py
delete mode 100644 llvm/utils/lit/tests/reorder.py
delete mode 100644 llvm/utils/lit/tests/selecting.py
delete mode 100644 llvm/utils/lit/tests/shell-parsing.py
delete mode 100644 llvm/utils/lit/tests/show-result-codes.py
delete mode 100644 llvm/utils/lit/tests/show-used-features.py
delete mode 100644 llvm/utils/lit/tests/shtest-cat.py
delete mode 100644 llvm/utils/lit/tests/shtest-define.py
delete mode 100644 llvm/utils/lit/tests/shtest-encoding.py
delete mode 100644 llvm/utils/lit/tests/shtest-env-negative.py
delete mode 100644 llvm/utils/lit/tests/shtest-env-path.py
delete mode 100644 llvm/utils/lit/tests/shtest-env-positive.py
delete mode 100644 llvm/utils/lit/tests/shtest-export.py
delete mode 100644 llvm/utils/lit/tests/shtest-external-shell-kill.py
delete mode 100644 llvm/utils/lit/tests/shtest-format-argv0.py
delete mode 100644 llvm/utils/lit/tests/shtest-format.py
delete mode 100644 llvm/utils/lit/tests/shtest-glob.py
delete mode 100644 llvm/utils/lit/tests/shtest-if-else.py
delete mode 100644 llvm/utils/lit/tests/shtest-inject.py
delete mode 100644 llvm/utils/lit/tests/shtest-keyword-parse-errors.py
delete mode 100644 llvm/utils/lit/tests/shtest-not-posix.py
delete mode 100644 llvm/utils/lit/tests/shtest-not.py
delete mode 100644 llvm/utils/lit/tests/shtest-output-printing.py
delete mode 100644 llvm/utils/lit/tests/shtest-pushd-popd.py
delete mode 100644 llvm/utils/lit/tests/shtest-readfile-external.py
delete mode 100644 llvm/utils/lit/tests/shtest-readfile.py
delete mode 100644 llvm/utils/lit/tests/shtest-recursive-substitution.py
delete mode 100644 llvm/utils/lit/tests/shtest-run-at-line.py
delete mode 100644 llvm/utils/lit/tests/shtest-shell-symlinks.py
delete mode 100644 llvm/utils/lit/tests/shtest-shell.py
delete mode 100644 llvm/utils/lit/tests/shtest-timeout.py
delete mode 100644 llvm/utils/lit/tests/shtest-ulimit-nondarwin.py
delete mode 100644 llvm/utils/lit/tests/shtest-ulimit.py
delete mode 100644 llvm/utils/lit/tests/shtest-umask.py
delete mode 100644 llvm/utils/lit/tests/substitutions.py
delete mode 100644 llvm/utils/lit/tests/test-data-micro.py
delete mode 100644 llvm/utils/lit/tests/test-data.py
delete mode 100644 llvm/utils/lit/tests/test-output-micro-resultdb.py
delete mode 100644 llvm/utils/lit/tests/test-output-micro.py
delete mode 100644 llvm/utils/lit/tests/test-output-resultdb.py
delete mode 100644 llvm/utils/lit/tests/test-output.py
delete mode 100644 llvm/utils/lit/tests/time-tests.py
delete mode 100644 llvm/utils/lit/tests/timeout-hang.py
delete mode 100644 llvm/utils/lit/tests/unique-output-file.py
delete mode 100644 llvm/utils/lit/tests/unittest-adaptor.py
delete mode 100644 llvm/utils/lit/tests/unparsed-requirements.py
delete mode 100644 llvm/utils/lit/tests/usage.py
delete mode 100644 llvm/utils/lit/tests/use-llvm-tool.py
delete mode 100644 llvm/utils/lit/tests/verbosity.py
delete mode 100644 llvm/utils/lit/tests/windows-pools.py
delete mode 100644 llvm/utils/lit/tests/xfail-cl.py
delete mode 100644 llvm/utils/lit/tests/xunit-output-report-failures-only.py
delete mode 100644 llvm/utils/lit/tests/xunit-output.py
diff --git a/llvm/utils/lit/tests/allow-retries.py b/llvm/utils/lit/tests/allow-retries.py
deleted file mode 100644
index 98eed142964a6..0000000000000
--- a/llvm/utils/lit/tests/allow-retries.py
+++ /dev/null
@@ -1,124 +0,0 @@
-# Check the behavior of the ALLOW_RETRIES keyword.
-
-# This test uses a file that's stable across retries of the test to fail and
-# only succeed the fourth time it is retried.
-#
-# RUN: rm -f %t.counter
-# RUN: %{lit} %{inputs}/allow-retries/succeeds-within-limit.py -Dcounter=%t.counter -Dpython=%{python} | FileCheck --check-prefix=CHECK-TEST1 %s
-# CHECK-TEST1: Passed With Retry: 1
-
-# Test that a per-file ALLOW_RETRIES overwrites the config-wide test_retry_attempts property, if any.
-#
-# RUN: rm -f %t.counter
-# RUN: %{lit} %{inputs}/allow-retries/succeeds-within-limit.py -Dtest_retry_attempts=2 -Dcounter=%t.counter -Dpython=%{python} | FileCheck --check-prefix=CHECK-TEST2 %s
-# CHECK-TEST2: Passed With Retry: 1
-
-# This test does not succeed within the allowed retry limit
-#
-# Check that the execution trace isn't corrupt due to reprocessing the script
-# multiple times (e.g., '%dbg(...)' processing used to accumulate across
-# retries).
-#
-# RUN: not %{lit} %{inputs}/allow-retries/does-not-succeed-within-limit.py -v |\
-# RUN: FileCheck --check-prefix=CHECK-TEST3 -match-full-lines %s
-#
-# CHECK-TEST3: FAIL: allow-retries :: does-not-succeed-within-limit.py (1 of 1, 4 of 4 attempts)
-# CHECK-TEST3-NEXT: {{\**}} TEST 'allow-retries :: does-not-succeed-within-limit.py' FAILED {{\**}}
-# CHECK-TEST3-NEXT: Exit Code: 1
-# CHECK-TEST3-EMPTY:
-# CHECK-TEST3-NEXT: Command Output (stdout):
-# CHECK-TEST3-NEXT: --
-# CHECK-TEST3-NEXT: # {{RUN}}: at line 3
-# CHECK-TEST3-NEXT: false
-# CHECK-TEST3-NEXT: # executed command: false
-# CHECK-TEST3-NEXT: # note: command had no output on stdout or stderr
-# CHECK-TEST3-NEXT: # error: command failed with exit status: 1
-# CHECK-TEST3-EMPTY:
-# CHECK-TEST3-NEXT: --
-# CHECK-TEST3: Failed Tests (1):
-# CHECK-TEST3: allow-retries :: does-not-succeed-within-limit.py
-
-# This test should be UNRESOLVED since it has more than one ALLOW_RETRIES
-# lines, and that is not allowed.
-#
-# RUN: not %{lit} %{inputs}/allow-retries/more-than-one-allow-retries-lines.py | FileCheck --check-prefix=CHECK-TEST4 %s
-# CHECK-TEST4: Unresolved Tests (1):
-# CHECK-TEST4: allow-retries :: more-than-one-allow-retries-lines.py
-
-# This test does not provide a valid integer to the ALLOW_RETRIES keyword.
-# It should be unresolved.
-#
-# RUN: not %{lit} %{inputs}/allow-retries/not-a-valid-integer.py | FileCheck --check-prefix=CHECK-TEST5 %s
-# CHECK-TEST5: Unresolved Tests (1):
-# CHECK-TEST5: allow-retries :: not-a-valid-integer.py
-
-# This test checks that the config-wide test_retry_attempts property is used
-# when no ALLOW_RETRIES keyword is present.
-#
-# RUN: rm -f %t.counter
-# RUN: %{lit} %{inputs}/test_retry_attempts/test.py -Dcounter=%t.counter -Dpython=%{python} | FileCheck --check-prefix=CHECK-TEST6 %s
-# CHECK-TEST6: Passed With Retry: 1
-
-# This test checks that --per-test-coverage doesn't accumulate inserted
-# LLVM_PROFILE_FILE= commands across retries.
-#
-# RUN: rm -f %t.counter
-# RUN: %{lit} -a %{inputs}/test_retry_attempts/test.py --per-test-coverage\
-# RUN: -Dcounter=%t.counter -Dpython=%{python} | \
-# RUN: FileCheck --check-prefix=CHECK-TEST7 %s
-# CHECK-TEST7: Command Output (stdout):
-# CHECK-TEST7: # executed command: export LLVM_PROFILE_FILE=
-# CHECK-TEST7-NOT: # executed command: export LLVM_PROFILE_FILE=
-# CHECK-TEST7: Passed With Retry: 1
-
-# This test only passes on the 4th try. Here we check that a test can be re-run when:
-# * The "--max-retries-per-test" is specified high enough (7).
-# * No ALLOW_RETRIES keyword is used in the test script.
-# * No config.test_retry_attempts is adjusted in the test suite config file.
-# RUN: rm -f %t.counter
-# RUN: %{lit} %{inputs}/max-retries-per-test/no-allow-retries-no-test_retry_attempts/test.py \
-# RUN: --max-retries-per-test=7 \
-# RUN: -Dcounter=%t.counter \
-# RUN: -Dpython=%{python} \
-# RUN: | FileCheck --check-prefix=CHECK-TEST8 %s
-# CHECK-TEST8: FLAKYPASS: no-allow-retries-no-test_retry_attempts :: test.py (1 of 1, 4 of 8 attempts)
-# CHECK-TEST8: Passed With Retry: 1
-
-# This test only passes on the 4th try. Here we check that a test can be re-run when:
-# * The "--max-retries-per-test" is specified too low (2).
-# * ALLOW_RETRIES is specified high enough (8)
-# * No config.test_retry_attempts is adjusted in the test suite config file.
-# RUN: rm -f %t.counter
-# RUN: %{lit} %{inputs}/max-retries-per-test/allow-retries-no-test_retry_attempts/test.py \
-# RUN: --max-retries-per-test=2 \
-# RUN: -Dcounter=%t.counter \
-# RUN: -Dpython=%{python} \
-# RUN: | FileCheck --check-prefix=CHECK-TEST9 %s
-# CHECK-TEST9: FLAKYPASS: allow-retries-no-test_retry_attempts :: test.py (1 of 1, 4 of 9 attempts)
-# CHECK-TEST9: Passed With Retry: 1
-
-# This test only passes on the 4th try. Here we check that a test can be re-run when:
-# * The "--max-retries-per-test" is specified too low (2).
-# * No ALLOW_RETRIES keyword is used in the test script.
-# * config.test_retry_attempts is set high enough (9).
-# RUN: rm -f %t.counter
-# RUN: %{lit} %{inputs}/max-retries-per-test/no-allow-retries-test_retry_attempts/test.py \
-# RUN: --max-retries-per-test=2 \
-# RUN: -Dcounter=%t.counter \
-# RUN: -Dpython=%{python} \
-# RUN: | FileCheck --check-prefix=CHECK-TEST10 %s
-# CHECK-TEST10: FLAKYPASS: no-allow-retries-test_retry_attempts :: test.py (1 of 1, 4 of 10 attempts)
-# CHECK-TEST10: Passed With Retry: 1
-
-# This test only passes on the 4th try. Here we check that a test can be re-run when:
-# * The "--max-retries-per-test" is specified too low (1).
-# * ALLOW_RETRIES keyword is set high enough (10)
-# * config.test_retry_attempts is set too low (2).
-# RUN: rm -f %t.counter
-# RUN: %{lit} %{inputs}/max-retries-per-test/allow-retries-test_retry_attempts/test.py \
-# RUN: --max-retries-per-test=1 \
-# RUN: -Dcounter=%t.counter \
-# RUN: -Dpython=%{python} \
-# RUN: | FileCheck --check-prefix=CHECK-TEST11 %s
-# CHECK-TEST11: FLAKYPASS: allow-retries-test_retry_attempts :: test.py (1 of 1, 4 of 11 attempts)
-# CHECK-TEST11: Passed With Retry: 1
diff --git a/llvm/utils/lit/tests/boolean-parsing.py b/llvm/utils/lit/tests/boolean-parsing.py
deleted file mode 100644
index 372a94d233234..0000000000000
--- a/llvm/utils/lit/tests/boolean-parsing.py
+++ /dev/null
@@ -1,4 +0,0 @@
-# Test the boolean expression parser
-# used for REQUIRES and UNSUPPORTED and XFAIL
-
-# RUN: %{python} -m lit.BooleanExpression
diff --git a/llvm/utils/lit/tests/custom-result-category.py b/llvm/utils/lit/tests/custom-result-category.py
deleted file mode 100644
index f147f6b52dafa..0000000000000
--- a/llvm/utils/lit/tests/custom-result-category.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# UNSUPPORTED: system-windows
-# Test lit.main.add_result_category() extension API.
-
-# RUN: not %{lit} %{inputs}/custom-result-category | FileCheck %s
-
-# CHECK: CUSTOM_PASS: custom-result-category :: test1.txt
-# CHECK: CUSTOM_FAILURE: custom-result-category :: test2.txt
-
-# CHECK-NOT: My Passed Tests (1)
-# CHECK-NOT: custom-result-category :: test1.txt
-# CHECK: My Failed Tests (1)
-# CHECK: custom-result-category :: test2.txt
-
-# CHECK: My Passed: 1
-# CHECK: My Failed: 1
diff --git a/llvm/utils/lit/tests/discovery.py b/llvm/utils/lit/tests/discovery.py
deleted file mode 100755
index 60e7c8d6d688c..0000000000000
--- a/llvm/utils/lit/tests/discovery.py
+++ /dev/null
@@ -1,214 +0,0 @@
-# Check the basic discovery process, including a sub-suite.
-#
-# RUN: %{lit} %{inputs}/discovery \
-# RUN: --debug --show-tests --show-suites \
-# RUN: -v > %t.out 2> %t.err
-# RUN: FileCheck --check-prefix=CHECK-BASIC-OUT < %t.out %s
-# RUN: FileCheck --check-prefix=CHECK-BASIC-ERR < %t.err %s
-#
-# CHECK-BASIC-ERR: loading suite config '{{.*(/|\\\\)discovery(/|\\\\)lit.cfg}}'
-# CHECK-BASIC-ERR-DAG: loading suite config '{{.*(/|\\\\)discovery(/|\\\\)subsuite(/|\\\\)lit.cfg}}'
-# CHECK-BASIC-ERR-DAG: loading local config '{{.*(/|\\\\)discovery(/|\\\\)subdir(/|\\\\)lit.local.cfg}}'
-#
-# CHECK-BASIC-OUT: -- Test Suites --
-# CHECK-BASIC-OUT: sub-suite - 2 tests
-# CHECK-BASIC-OUT: Source Root: {{.*[/\\]discovery[/\\]subsuite$}}
-# CHECK-BASIC-OUT: Exec Root : {{.*[/\\]discovery[/\\]subsuite$}}
-# CHECK-BASIC-OUT: top-level-suite - 3 tests
-# CHECK-BASIC-OUT: Source Root: {{.*[/\\]discovery$}}
-# CHECK-BASIC-OUT: Exec Root : {{.*[/\\]discovery$}}
-# CHECK-BASIC-OUT: Available Features: feature1 feature2
-# CHECK-BASIC-OUT: Available Substitutions: %key1 => value1
-# CHECK-BASIC-OUT: %key2 => value2
-#
-# CHECK-BASIC-OUT: -- Available Tests --
-# CHECK-BASIC-OUT: sub-suite :: test-one
-# CHECK-BASIC-OUT: sub-suite :: test-two
-# CHECK-BASIC-OUT: top-level-suite :: subdir/test-three
-# CHECK-BASIC-OUT: top-level-suite :: test-one
-# CHECK-BASIC-OUT: top-level-suite :: test-two
-
-# RUN: %{lit} %{inputs}/discovery \
-# RUN: -v > %t.out 2> %t.err
-# RUN: FileCheck --check-prefix=CHECK-PERCENTAGES-OUT < %/t.out %s
-#
-# CHECK-PERCENTAGES-OUT: Total Discovered Tests: {{[0-9]*}}
-# CHECK-PERCENTAGES-OUT: Passed: {{[0-9]*}} {{\([0-9]*\.[0-9]*%\)}}
-
-# Check discovery when providing the special builtin 'config_map'
-# RUN: %{python} %{inputs}/config-map-discovery/driver.py \
-# RUN: %{inputs}/config-map-discovery/main-config/lit.cfg \
-# RUN: %{inputs}/config-map-discovery/lit.alt.cfg \
-# RUN: --workers=1 --debug --show-tests --show-suites > %t.out 2> %t.err
-# RUN: FileCheck --check-prefix=CHECK-CONFIG-MAP-OUT < %t.out %s
-# RUN: FileCheck --check-prefix=CHECK-CONFIG-MAP-ERR < %t.err %s
-
-# CHECK-CONFIG-MAP-OUT-NOT: ERROR: lit.cfg invoked
-# CHECK-CONFIG-MAP-OUT: -- Test Suites --
-# CHECK-CONFIG-MAP-OUT: config-map - 2 tests
-# CHECK-CONFIG-MAP-OUT: Source Root: {{.*[/\\]config-map-discovery[/\\]tests}}
-# CHECK-CONFIG-MAP-OUT: Exec Root : {{.*[/\\]tests[/\\]Inputs[/\\]config-map-discovery}}
-# CHECK-CONFIG-MAP-OUT: -- Available Tests --
-# CHECK-CONFIG-MAP-OUT-NOT: invalid-test.txt
-# CHECK-CONFIG-MAP-OUT: config-map :: test1.txt
-# CHECK-CONFIG-MAP-OUT: config-map :: test2.txt
-
-# CHECK-CONFIG-MAP-ERR: loading suite config '{{.*}}lit.alt.cfg'
-# CHECK-CONFIG-MAP-ERR: loaded config '{{.*}}lit.alt.cfg'
-# CHECK-CONFIG-MAP-ERR: resolved input '{{.*(/|\\\\)config-map-discovery(/|\\\\)main-config}}' to 'config-map'::()
-
-
-# Check discovery when tests are named directly.
-#
-# RUN: %{lit} \
-# RUN: %{inputs}/discovery/subdir/test-three.py \
-# RUN: %{inputs}/discovery/subsuite/test-one.txt \
-# RUN: --show-tests --show-suites -v > %t.out
-# RUN: FileCheck --check-prefix=CHECK-DIRECT-TEST < %t.out %s
-#
-# CHECK-DIRECT-TEST: -- Available Tests --
-# CHECK-DIRECT-TEST: sub-suite :: test-one
-# CHECK-DIRECT-TEST: top-level-suite :: subdir/test-three
-
-# Check discovery when config files end in .py
-# RUN: %{lit} %{inputs}/py-config-discovery \
-# RUN: --debug --show-tests --show-suites \
-# RUN: -v > %t.out 2> %t.err
-# RUN: FileCheck --check-prefix=CHECK-PYCONFIG-OUT < %t.out %s
-# RUN: FileCheck --check-prefix=CHECK-PYCONFIG-ERR < %t.err %s
-#
-# CHECK-PYCONFIG-ERR: loading suite config '{{.*(/|\\\\)py-config-discovery(/|\\\\)lit.site.cfg.py}}'
-# CHECK-PYCONFIG-ERR: load_config from '{{.*(/|\\\\)discovery(/|\\\\)lit.cfg}}'
-# CHECK-PYCONFIG-ERR: loaded config '{{.*(/|\\\\)discovery(/|\\\\)lit.cfg}}'
-# CHECK-PYCONFIG-ERR: loaded config '{{.*(/|\\\\)py-config-discovery(/|\\\\)lit.site.cfg.py}}'
-# CHECK-PYCONFIG-ERR-DAG: loading suite config '{{.*(/|\\\\)discovery(/|\\\\)subsuite(/|\\\\)lit.cfg}}'
-# CHECK-PYCONFIG-ERR-DAG: loading local config '{{.*(/|\\\\)discovery(/|\\\\)subdir(/|\\\\)lit.local.cfg}}'
-#
-# CHECK-PYCONFIG-OUT: -- Test Suites --
-# CHECK-PYCONFIG-OUT: sub-suite - 2 tests
-# CHECK-PYCONFIG-OUT: Source Root: {{.*[/\\]discovery[/\\]subsuite$}}
-# CHECK-PYCONFIG-OUT: Exec Root : {{.*[/\\]discovery[/\\]subsuite$}}
-# CHECK-PYCONFIG-OUT: top-level-suite - 3 tests
-# CHECK-PYCONFIG-OUT: Source Root: {{.*[/\\]discovery$}}
-# CHECK-PYCONFIG-OUT: Exec Root : {{.*[/\\]py-config-discovery$}}
-#
-# CHECK-PYCONFIG-OUT: -- Available Tests --
-# CHECK-PYCONFIG-OUT: sub-suite :: test-one
-# CHECK-PYCONFIG-OUT: sub-suite :: test-two
-# CHECK-PYCONFIG-OUT: top-level-suite :: subdir/test-three
-# CHECK-PYCONFIG-OUT: top-level-suite :: test-one
-# CHECK-PYCONFIG-OUT: top-level-suite :: test-two
-
-# Check discovery when using an exec path.
-#
-# RUN: %{lit} %{inputs}/exec-discovery \
-# RUN: --debug --show-tests --show-suites \
-# RUN: -v > %t.out 2> %t.err
-# RUN: FileCheck --check-prefix=CHECK-ASEXEC-OUT < %t.out %s
-# RUN: FileCheck --check-prefix=CHECK-ASEXEC-ERR < %t.err %s
-#
-# CHECK-ASEXEC-ERR: loading suite config '{{.*(/|\\\\)exec-discovery(/|\\\\)lit.site.cfg}}'
-# CHECK-ASEXEC-ERR: load_config from '{{.*(/|\\\\)discovery(/|\\\\)lit.cfg}}'
-# CHECK-ASEXEC-ERR: loaded config '{{.*(/|\\\\)discovery(/|\\\\)lit.cfg}}'
-# CHECK-ASEXEC-ERR: loaded config '{{.*(/|\\\\)exec-discovery(/|\\\\)lit.site.cfg}}'
-# CHECK-ASEXEC-ERR-DAG: loading suite config '{{.*(/|\\\\)discovery(/|\\\\)subsuite(/|\\\\)lit.cfg}}'
-# CHECK-ASEXEC-ERR-DAG: loading local config '{{.*(/|\\\\)discovery(/|\\\\)subdir(/|\\\\)lit.local.cfg}}'
-#
-# CHECK-ASEXEC-OUT: -- Test Suites --
-# CHECK-ASEXEC-OUT: sub-suite - 2 tests
-# CHECK-ASEXEC-OUT: Source Root: {{.*[/\\]discovery[/\\]subsuite$}}
-# CHECK-ASEXEC-OUT: Exec Root : {{.*[/\\]discovery[/\\]subsuite$}}
-# CHECK-ASEXEC-OUT: top-level-suite - 3 tests
-# CHECK-ASEXEC-OUT: Source Root: {{.*[/\\]discovery$}}
-# CHECK-ASEXEC-OUT: Exec Root : {{.*[/\\]exec-discovery$}}
-#
-# CHECK-ASEXEC-OUT: -- Available Tests --
-# CHECK-ASEXEC-OUT: sub-suite :: test-one
-# CHECK-ASEXEC-OUT: sub-suite :: test-two
-# CHECK-ASEXEC-OUT: top-level-suite :: subdir/test-three
-# CHECK-ASEXEC-OUT: top-level-suite :: test-one
-# CHECK-ASEXEC-OUT: top-level-suite :: test-two
-
-# Check discovery when tests are named directly.
-#
-# FIXME: Note that using a path into a subsuite doesn't work correctly here.
-#
-# RUN: %{lit} \
-# RUN: %{inputs}/exec-discovery/subdir/test-three.py \
-# RUN: --show-tests --show-suites -v > %t.out
-# RUN: FileCheck --check-prefix=CHECK-ASEXEC-DIRECT-TEST < %t.out %s
-#
-# CHECK-ASEXEC-DIRECT-TEST: -- Available Tests --
-# CHECK-ASEXEC-DIRECT-TEST: top-level-suite :: subdir/test-three
-
-# Check that an error is emitted when the directly named test does not satisfy
-# the test config's requirements.
-#
-# RUN: not %{lit} \
-# RUN: %{inputs}/discovery/test.not-txt 2>%t.err
-# RUN: FileCheck --check-prefix=CHECK-ERROR-INPUT-CONTAINED-NO-TESTS < %t.err %s
-#
-# CHECK-ERROR-INPUT-CONTAINED-NO-TESTS: warning: input 'Inputs/discovery/test.not-txt' contained no tests
-# CHECK-ERROR-INPUT-CONTAINED-NO-TESTS: error: did not discover any tests for provided path(s)
-
-# Check that a standalone test with no suffixes set is run without any errors.
-#
-# RUN: %{lit} %{inputs}/standalone-tests/true.txt > %t.out
-# RUN: FileCheck --check-prefix=CHECK-STANDALONE < %t.out %s
-#
-# CHECK-STANDALONE: PASS: Standalone tests :: true.txt
-
-# Check that an error is produced if suffixes variable is set for a suite with
-# standalone tests.
-#
-# RUN: not %{lit} %{inputs}/standalone-tests-with-suffixes 2> %t.err
-# RUN: FileCheck --check-prefixes=CHECK-STANDALONE-SUFFIXES,CHECK-STANDALONE-DISCOVERY < %t.err %s
-#
-# CHECK-STANDALONE-SUFFIXES: standalone_tests set {{.*}} but suffixes
-
-# Check that an error is produced if excludes variable is set for a suite with
-# standalone tests.
-#
-# RUN: not %{lit} %{inputs}/standalone-tests-with-excludes 2> %t.err
-# RUN: FileCheck --check-prefixes=CHECK-STANDALONE-EXCLUDES,CHECK-STANDALONE-DISCOVERY < %t.err %s
-#
-# CHECK-STANDALONE-EXCLUDES: standalone_tests set {{.*}} but {{.*}} excludes
-
-# Check that no discovery is done for testsuite with standalone tests.
-#
-# RUN: not %{lit} %{inputs}/standalone-tests 2>%t.err
-# RUN: FileCheck --check-prefix=CHECK-STANDALONE-DISCOVERY < %t.err %s
-#
-# CHECK-STANDALONE-DISCOVERY: error: did not discover any tests for provided path(s)
-
-# Check that a single file path can result in multiple tests being discovered if
-# the test format implements those semantics.
-#
-# RUN: %{lit} %{inputs}/discovery-getTestsForPath/x.test > %t.out
-# RUN: FileCheck --check-prefix=CHECK-getTestsForPath < %t.out %s
-#
-# CHECK-getTestsForPath: PASS: discovery-getTestsForPath-suite :: {{.+}}one.test
-# CHECK-getTestsForPath: PASS: discovery-getTestsForPath-suite :: {{.+}}two.test
-
-# Check that we don't recurse infinitely when loading an site specific test
-# suite located inside the test source root.
-#
-# RUN: %{lit} \
-# RUN: %{inputs}/exec-discovery-in-tree/obj/ \
-# RUN: --show-tests --show-suites -v > %t.out
-# RUN: FileCheck --check-prefix=CHECK-ASEXEC-INTREE < %t.out %s
-#
-# Try it again after cd'ing into the test suite using a short relative path.
-#
-# RUN: cd %{inputs}/exec-discovery-in-tree/obj/
-# RUN: %{lit} . \
-# RUN: --show-tests --show-suites -v > %t.out
-# RUN: FileCheck --check-prefix=CHECK-ASEXEC-INTREE < %t.out %s
-#
-# CHECK-ASEXEC-INTREE: exec-discovery-in-tree-suite - 1 tests
-# CHECK-ASEXEC-INTREE-NEXT: Source Root: {{.*[/\\]exec-discovery-in-tree$}}
-# CHECK-ASEXEC-INTREE-NEXT: Exec Root : {{.*[/\\]exec-discovery-in-tree[/\\]obj$}}
-# CHECK-ASEXEC-INTREE-NEXT: Available Features:
-# CHECK-ASEXEC-INTREE-NEXT: Available Substitutions:
-# CHECK-ASEXEC-INTREE-NEXT: -- Available Tests --
-# CHECK-ASEXEC-INTREE-NEXT: exec-discovery-in-tree-suite :: test-one
diff --git a/llvm/utils/lit/tests/escape-color.py b/llvm/utils/lit/tests/escape-color.py
deleted file mode 100644
index 8fdda3553da39..0000000000000
--- a/llvm/utils/lit/tests/escape-color.py
+++ /dev/null
@@ -1,4 +0,0 @@
-# cut off the first 9 lines to avoid absolute file paths in the output
-# then keep only the next 10 lines to avoid test timing in the output
-# RUN: %{lit} %{inputs}/escape-color/color.txt -a | tail -n +10 | head -n 10 > %t
-# RUN: diff --strip-trailing-cr %{inputs}/escape-color/color-escaped.txt %t
diff --git a/llvm/utils/lit/tests/filter-failed-delete.py b/llvm/utils/lit/tests/filter-failed-delete.py
deleted file mode 100644
index 68bb840425ea3..0000000000000
--- a/llvm/utils/lit/tests/filter-failed-delete.py
+++ /dev/null
@@ -1,16 +0,0 @@
-# Shows behaviour when a previously failed test was deleted
-# before running with --filter-failed.
-
-# RUN: rm -rf %t
-# RUN: cp -r %{inputs}%{fs-sep}filter-failed %t
-#
-# RUN: not %{lit} %t | FileCheck %s --check-prefix=CHECK-FIRST
-#
-# RUN: rm %t%{fs-sep}fail.txt
-# RUN: not %{lit} --filter-failed %t | FileCheck %s --check-prefix=CHECK-SECOND
-
-# CHECK-FIRST: Testing: 5 tests
-# CHECK-FIRST: FAIL: filter-failed :: fail.txt
-
-# CHECK-SECOND: Testing: 2 of 4 tests
-# CHECK-SECOND-NOT: filter-failed :: fail.txt
diff --git a/llvm/utils/lit/tests/filter-failed-rerun.py b/llvm/utils/lit/tests/filter-failed-rerun.py
deleted file mode 100644
index 1513f638371f7..0000000000000
--- a/llvm/utils/lit/tests/filter-failed-rerun.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# Checks that --filter-failed won't re-run tests that have passed
-# since the last time --filter-failed was run.
-
-# RUN: rm -rf %t
-# RUN: cp -r %{inputs}%{fs-sep}filter-failed %t
-#
-# RUN: not %{lit} %t | FileCheck %s --check-prefix=CHECK-FIRST
-#
-# RUN: cp -f %t%{fs-sep}pass.txt %t%{fs-sep}fail.txt
-# RUN: not %{lit} %t | FileCheck %s --check-prefix=CHECK-SECOND
-# RUN: not %{lit} --filter-failed %t | FileCheck %s --check-prefix=CHECK-THIRD
-
-# CHECK-FIRST: FAIL: filter-failed :: fail.txt
-
-# CHECK-SECOND: PASS: filter-failed :: fail.txt
-
-# CHECK-THIRD: Testing: 2 of 5 tests
-# CHECK-THIRD-NOT: filter-failed :: fail.txt
diff --git a/llvm/utils/lit/tests/filter-failed.py b/llvm/utils/lit/tests/filter-failed.py
deleted file mode 100644
index 3c1c6fe010077..0000000000000
--- a/llvm/utils/lit/tests/filter-failed.py
+++ /dev/null
@@ -1,23 +0,0 @@
-# Checks that --filter-failed only runs tests that previously failed.
-
-# RUN: rm -rf %t
-# RUN: cp -r %{inputs}%{fs-sep}filter-failed %t
-#
-# RUN: not %{lit} %t
-#
-# RUN: echo "RUN: false" > %t%{fs-sep}new-fail.txt
-# RUN: echo "RUN: true" > %t%{fs-sep}new-pass.txt
-#
-# RUN: not %{lit} --filter-failed %t | FileCheck %s
-
-# CHECK: Testing: 3 of 7 tests
-# CHECK-DAG: FAIL: filter-failed :: fail.txt
-# CHECK-DAG: UNRESOLVED: filter-failed :: unresolved.txt
-# CHECK-DAG: XPASS: filter-failed :: xpass.txt
-
-# CHECK: Testing Time:
-# CHECK: Total Discovered Tests:
-# CHECK-NEXT: Excluded : 4 {{\([0-9]*\.[0-9]*%\)}}
-# CHECK-NEXT: Unresolved : 1 {{\([0-9]*\.[0-9]*%\)}}
-# CHECK-NEXT: Failed : 1 {{\([0-9]*\.[0-9]*%\)}}
-# CHECK-NEXT: Unexpectedly Passed: 1 {{\([0-9]*\.[0-9]*%\)}}
diff --git a/llvm/utils/lit/tests/googletest-cmd-wrapper.py b/llvm/utils/lit/tests/googletest-cmd-wrapper.py
deleted file mode 100644
index faeee5ae8530b..0000000000000
--- a/llvm/utils/lit/tests/googletest-cmd-wrapper.py
+++ /dev/null
@@ -1,7 +0,0 @@
-# Check the GoogleTest format support command wrappers.
-
-# RUN: %{lit} -v %{inputs}/googletest-cmd-wrapper | FileCheck %s
-
-# CHECK: -- Testing:
-# CHECK-NEXT: PASS: googletest-cmd-wrapper :: DummySubDir/OneTest.exe/0/1 (1 of 1)
-# CHECK: Passed: 1
diff --git a/llvm/utils/lit/tests/googletest-crash.py b/llvm/utils/lit/tests/googletest-crash.py
deleted file mode 100644
index f83e0dc7dd0e9..0000000000000
--- a/llvm/utils/lit/tests/googletest-crash.py
+++ /dev/null
@@ -1,26 +0,0 @@
-# Check GoogleTest shard test crashes are handled.
-
-# RUN: not %{lit} -v %{inputs}/googletest-crash | FileCheck %s
-
-# CHECK: -- Testing:
-# CHECK: FAIL: googletest-crash :: [[PATH:[Dd]ummy[Ss]ub[Dd]ir/]][[FILE:OneTest\.py]]/0
-# CHECK: *** TEST 'googletest-crash :: [[PATH]][[FILE]]/0{{.*}} FAILED ***
-# CHECK-NEXT: Script(shard):
-# CHECK-NEXT: --
-# CHECK-NEXT: GTEST_OUTPUT=json:[[JSON:[^[:space:]]*\.json]] GTEST_SHUFFLE=0 GTEST_TOTAL_SHARDS={{[1-6]}} GTEST_SHARD_INDEX=0 {{.*}}[[FILE]]
-# CHECK-NEXT: --
-# CHECK-EMPTY:
-# CHECK-NEXT: [----------] 4 test from FirstTest
-# CHECK-NEXT: [ RUN ] FirstTest.subTestA
-# CHECK-NEXT: [ OK ] FirstTest.subTestA (18 ms)
-# CHECK-NEXT: [ RUN ] FirstTest.subTestB
-# CHECK-NEXT: I am about to crash
-# CHECK-EMPTY:
-# CHECK-NEXT: --
-# CHECK-NEXT: exit:
-# CHECK-NEXT: --
-# CHECK-NEXT: shard JSON output does not exist: [[JSON]]
-# CHECK-NEXT: ***
-# CHECK: Failed Tests (1):
-# CHECK-NEXT: googletest-crash :: [[PATH]][[FILE]]/0/{{[1-6]}}
-# CHECK: Failed{{ *}}: 1
diff --git a/llvm/utils/lit/tests/googletest-detect-duplicate.py b/llvm/utils/lit/tests/googletest-detect-duplicate.py
deleted file mode 100644
index dab75bca4e8b3..0000000000000
--- a/llvm/utils/lit/tests/googletest-detect-duplicate.py
+++ /dev/null
@@ -1,12 +0,0 @@
-# Check we don't add a GoogleTest binary more than once and issue a warning
-# when it happens.
-
-# RUN: %{lit} -v --order=random %{inputs}/googletest-detect-duplicate \
-# RUN: %{inputs}/googletest-detect-duplicate 2> %t.warn | FileCheck %s
-# RUN: FileCheck --check-prefix=CHECK-WARN < %t.warn %s
-
-# CHECK-WARN: warning: Skip adding
-
-# CHECK: -- Testing:
-# CHECK: PASS: googletest-detect-duplicate :: [[PATH:[Dd]ummy[Ss]ub[Dd]ir/]][[FILE:OneTest\.py]]/0
-# CHECK: Passed{{ *}}: 1
diff --git a/llvm/utils/lit/tests/googletest-discovery-failed.py b/llvm/utils/lit/tests/googletest-discovery-failed.py
deleted file mode 100644
index bc84c8f03226a..0000000000000
--- a/llvm/utils/lit/tests/googletest-discovery-failed.py
+++ /dev/null
@@ -1,10 +0,0 @@
-# Check for correct error message when discovery of tests fails.
-#
-# RUN: not %{lit} -v %{inputs}/googletest-discovery-failed > %t.cmd.out
-# RUN: FileCheck < %t.cmd.out %s
-
-
-# CHECK: -- Testing:
-# CHECK: Failed Tests (1):
-# CHECK: googletest-discovery-failed :: subdir/OneTest.py/failed_to_discover_tests_from_gtest
-# CHECK: Failed: 1
diff --git a/llvm/utils/lit/tests/googletest-format-respect-gtest-sharding-env-vars.py b/llvm/utils/lit/tests/googletest-format-respect-gtest-sharding-env-vars.py
deleted file mode 100644
index c5a100fe0c168..0000000000000
--- a/llvm/utils/lit/tests/googletest-format-respect-gtest-sharding-env-vars.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# Check GTEST_TOTAL_SHARDS and GTEST_SHARD_INDEX environment variabls are
-# respected when using the googletest formatter.
-
-# RUN: env GTEST_TOTAL_SHARDS=1 GTEST_SHARD_INDEX=0 \
-# RUN: not %{lit} -v --order=random %{inputs}/googletest-format-respect-gtest-sharding-env-vars > %t.out
-# FIXME: Temporarily dump test output so we can debug failing tests on
-# buildbots.
-# RUN: cat %t.out
-# RUN: FileCheck < %t.out %s
-#
-# END.
-
-# CHECK: -- Testing:
-# CHECK: FAIL: googletest-format :: [[PATH:[Dd]ummy[Ss]ub[Dd]ir/]][[FILE:OneTest\.py]]/0
-# CHECK: *** TEST 'googletest-format :: [[PATH]][[FILE]]/0{{.*}} FAILED ***
-# CHECK-NEXT: Script(shard):
-# CHECK-NEXT: --
-# CHECK-NEXT: GTEST_OUTPUT=json:{{[^[:space:]]*}} GTEST_SHUFFLE=1 GTEST_TOTAL_SHARDS=1 GTEST_SHARD_INDEX=0 GTEST_RANDOM_SEED=123 {{.*}}[[FILE]]
diff --git a/llvm/utils/lit/tests/googletest-format.py b/llvm/utils/lit/tests/googletest-format.py
deleted file mode 100644
index b66e8998cb84e..0000000000000
--- a/llvm/utils/lit/tests/googletest-format.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# Check the various features of the GoogleTest format.
-
-# RUN: not %{lit} -v --order=random %{inputs}/googletest-format > %t.out
-# FIXME: Temporarily dump test output so we can debug failing tests on
-# buildbots.
-# RUN: cat %t.out
-# RUN: FileCheck < %t.out %s
-#
-# END.
-
-# CHECK: -- Testing:
-# CHECK: FAIL: googletest-format :: [[PATH:[Dd]ummy[Ss]ub[Dd]ir/]][[FILE:OneTest\.py]]/0
-# CHECK: *** TEST 'googletest-format :: [[PATH]][[FILE]]/0{{.*}} FAILED ***
-# CHECK-NEXT: Script(shard):
-# CHECK-NEXT: --
-# CHECK-NEXT: GTEST_OUTPUT=json:{{[^[:space:]]*}} GTEST_SHUFFLE=1 GTEST_TOTAL_SHARDS={{[1-6]}} GTEST_SHARD_INDEX=0 GTEST_RANDOM_SEED=123 {{.*}}[[FILE]]
-# CHECK-NEXT: --
-# CHECK-EMPTY:
-# CHECK-NEXT: Script:
-# CHECK-NEXT: --
-# CHECK-NEXT: [[FILE]] --gtest_filter=FirstTest.subTestB
-# CHECK-NEXT: --
-# CHECK-NEXT: I am subTest B output
-# CHECK-EMPTY:
-# CHECK-NEXT: I am subTest B, I FAIL
-# CHECK-NEXT: And I have two lines of output
-# CHECK-EMPTY:
-# CHECK: Script:
-# CHECK-NEXT: --
-# CHECK-NEXT: [[FILE]] --gtest_filter=FirstTest.subTestD
-# CHECK-NEXT: --
-# CHECK-NEXT: unresolved test result
-# CHECK: ***
-# CHECK: Unresolved Tests (1):
-# CHECK-NEXT: googletest-format :: [[PATH]][[FILE]]/FirstTest/subTestD
-# CHECK: ***
-# CHECK-NEXT: Failed Tests (1):
-# CHECK-NEXT: googletest-format :: [[PATH]][[FILE]]/FirstTest/subTestB
-# CHECK: Skipped{{ *}}: 1
-# CHECK: Passed{{ *}}: 3
-# CHECK: Unresolved{{ *}}: 1
-# CHECK: Failed{{ *}}: 1
diff --git a/llvm/utils/lit/tests/googletest-no-sharding.py b/llvm/utils/lit/tests/googletest-no-sharding.py
deleted file mode 100644
index bb008effb8315..0000000000000
--- a/llvm/utils/lit/tests/googletest-no-sharding.py
+++ /dev/null
@@ -1,43 +0,0 @@
-# Check the various features of the GoogleTest format.
-
-# RUN: not %{lit} -v --no-gtest-sharding --order=random %{inputs}/googletest-no-sharding > %t.out
-# FIXME: Temporarily dump test output so we can debug failing tests on
-# buildbots.
-# RUN: cat %t.out
-# RUN: FileCheck < %t.out %s
-#
-# END.
-
-# CHECK: -- Testing:
-# CHECK: FAIL: googletest-no-sharding :: [[PATH:[Dd]ummy[Ss]ub[Dd]ir/]][[FILE:OneTest\.py]]
-# CHECK: *** TEST 'googletest-no-sharding :: [[PATH]][[FILE]]' FAILED ***
-# CHECK-NEXT: Script(shard):
-# CHECK-NEXT: --
-# CHECK-NEXT: GTEST_OUTPUT=json:{{[^[:space:]]*}} GTEST_SHUFFLE=1 GTEST_RANDOM_SEED=123 {{.*}}[[FILE]]
-# CHECK-NEXT: --
-# CHECK-EMPTY:
-# CHECK-NEXT: Script:
-# CHECK-NEXT: --
-# CHECK-NEXT: [[FILE]] --gtest_filter=FirstTest.subTestB
-# CHECK-NEXT: --
-# CHECK-NEXT: I am subTest B output
-# CHECK-EMPTY:
-# CHECK-NEXT: I am subTest B, I FAIL
-# CHECK-NEXT: And I have two lines of output
-# CHECK-EMPTY:
-# CHECK: Script:
-# CHECK-NEXT: --
-# CHECK-NEXT: [[FILE]] --gtest_filter=FirstTest.subTestD
-# CHECK-NEXT: --
-# CHECK-NEXT: unresolved test result
-# CHECK: ***
-# CHECK: ***
-# CHECK: Unresolved Tests (1):
-# CHECK-NEXT: googletest-no-sharding :: FirstTest/subTestD
-# CHECK: ***
-# CHECK-NEXT: Failed Tests (1):
-# CHECK-NEXT: googletest-no-sharding :: FirstTest/subTestB
-# CHECK: Skipped{{ *}}: 1
-# CHECK: Passed{{ *}}: 3
-# CHECK: Unresolved{{ *}}: 1
-# CHECK: Failed{{ *}}: 1
diff --git a/llvm/utils/lit/tests/googletest-prefix.py b/llvm/utils/lit/tests/googletest-prefix.py
deleted file mode 100644
index 094a3fd488f2c..0000000000000
--- a/llvm/utils/lit/tests/googletest-prefix.py
+++ /dev/null
@@ -1,11 +0,0 @@
-# RUN: env GTEST_TOTAL_SHARDS=1 GTEST_SHARD_INDEX=0 \
-# RUN: %{lit} -v --order=random --no-gtest-sharding %{inputs}/googletest-prefix --show-tests > %t.out
-# FIXME: Temporarily dump test output so we can debug failing tests on
-# buildbots.
-# RUN: cat %t.out
-# RUN: FileCheck < %t.out %s
-#
-# END.
-
-# CHECK: -- Available Tests --
-# CHECK-NEXT: googletest-format :: DummySubDir/test_one.py
\ No newline at end of file
diff --git a/llvm/utils/lit/tests/googletest-sanitizer-error.py b/llvm/utils/lit/tests/googletest-sanitizer-error.py
deleted file mode 100644
index 741ad088424d7..0000000000000
--- a/llvm/utils/lit/tests/googletest-sanitizer-error.py
+++ /dev/null
@@ -1,31 +0,0 @@
-# Check the output is expected when tests pass but sanitizer fails.
-# Note that there is only one shard which has only one sub-test. However, the summary
-# has one pass for the sub-test and one fail for the shard failure due to sanitizer
-# reported errors.
-
-# RUN: not %{lit} -v --order=random %{inputs}/googletest-sanitizer-error > %t.out
-# FIXME: Temporarily dump test output so we can debug failing tests on
-# buildbots.
-# RUN: cat %t.out
-# RUN: FileCheck < %t.out %s
-#
-# END.
-
-# CHECK: -- Testing:
-# CHECK: FAIL: googletest-sanitizer-error :: [[PATH:[Dd]ummy[Ss]ub[Dd]ir/]][[FILE:OneTest\.py]]/0
-# CHECK: *** TEST 'googletest-sanitizer-error :: [[PATH]][[FILE]]/0{{.*}} FAILED ***
-# CHECK-NEXT: Script(shard):
-# CHECK-NEXT: --
-# CHECK-NEXT: GTEST_OUTPUT=json:{{[^[:space:]]*}} GTEST_SHUFFLE=1 GTEST_TOTAL_SHARDS={{[1-6]}} GTEST_SHARD_INDEX=0 GTEST_RANDOM_SEED=123 {{.*}}[[FILE]]
-# CHECK-NEXT: --
-# CHECK-EMPTY:
-# CHECK-EMPTY:
-# CHECK: [ RUN ] FirstTest.subTestA
-# CHECK-NEXT: [ OK ] FirstTest.subTestA (8 ms)
-# CHECK: --
-# CHECK-NEXT: exit: 1
-# CHECK-NEXT: --
-# CHECK: Failed Tests (1):
-# CHECK-NEXT: googletest-sanitizer-error :: [[PATH]][[FILE]]/0/1
-# CHECK: Passed{{ *}}: 1
-# CHECK: Failed{{ *}}: 1
diff --git a/llvm/utils/lit/tests/googletest-timeout.py b/llvm/utils/lit/tests/googletest-timeout.py
deleted file mode 100644
index a17d3a5b9cb6b..0000000000000
--- a/llvm/utils/lit/tests/googletest-timeout.py
+++ /dev/null
@@ -1,58 +0,0 @@
-# REQUIRES: lit-max-individual-test-time
-
-###############################################################################
-# Check tests can hit timeout when set
-###############################################################################
-
-# Check that the per test timeout is enforced when running GTest tests.
-#
-# RUN: not %{lit} -v %{inputs}/googletest-timeout \
-# RUN: --param gtest_filter=InfiniteLoopSubTest --timeout=1 > %t.cmd.out
-# RUN: FileCheck --check-prefix=CHECK-INF < %t.cmd.out %s
-
-# Check that the per test timeout is enforced when running GTest tests via
-# the configuration file
-#
-# RUN: not %{lit} -v %{inputs}/googletest-timeout \
-# RUN: --param gtest_filter=InfiniteLoopSubTest --param set_timeout=1 \
-# RUN: > %t.cfgset.out
-# RUN: FileCheck --check-prefix=CHECK-INF < %t.cfgset.out %s
-
-# CHECK-INF: -- Testing:
-# CHECK-INF: TIMEOUT: googletest-timeout :: [[PATH:[Dd]ummy[Ss]ub[Dd]ir/]][[FILE:OneTest.py]]/0/2
-# CHECK-INF-NEXT: ******************** TEST 'googletest-timeout :: [[PATH]][[FILE]]/0/2' FAILED ********************
-# CHECK-INF-NEXT: Script(shard):
-# CHECK-INF-NEXT: --
-# CHECK-INF-NEXT: GTEST_OUTPUT=json:{{[^[:space:]]*}} GTEST_SHUFFLE=0 GTEST_TOTAL_SHARDS=2 GTEST_SHARD_INDEX=0 {{.*}}[[FILE]]
-# CHECK-INF-NEXT: --
-# CHECK-INF-EMPTY:
-# CHECK-INF-EMPTY:
-# CHECK-INF-NEXT: --
-# CHECK-INF-NEXT: exit:
-# CHECK-INF-NEXT: --
-# CHECK-INF-NEXT: Reached timeout of 1 seconds
-# CHECK-INF: Timed Out: 1
-
-###############################################################################
-# Check tests can complete with a timeout set
-#
-# `QuickSubTest` should execute quickly so we shouldn't wait anywhere near the
-# 3600 second timeout.
-###############################################################################
-
-# RUN: %{lit} -v %{inputs}/googletest-timeout \
-# RUN: --param gtest_filter=QuickSubTest --timeout=3600 > %t.cmd.out
-# RUN: FileCheck --check-prefix=CHECK-QUICK < %t.cmd.out %s
-
-# CHECK-QUICK: PASS: googletest-timeout :: {{[Dd]ummy[Ss]ub[Dd]ir}}/OneTest.py/0/2 {{.*}}
-# CHECK-QUICK: Passed: 1
-
-# Test per test timeout via a config file and on the command line.
-# The value set on the command line should override the config file.
-# RUN: %{lit} -v %{inputs}/googletest-timeout --param gtest_filter=QuickSubTest \
-# RUN: --param set_timeout=1 --timeout=3600 \
-# RUN: > %t.cmdover.out 2> %t.cmdover.err
-# RUN: FileCheck --check-prefix=CHECK-QUICK < %t.cmdover.out %s
-# RUN: FileCheck --check-prefix=CHECK-CMDLINE-OVERRIDE-ERR < %t.cmdover.err %s
-
-# CHECK-CMDLINE-OVERRIDE-ERR: Forcing timeout to be 3600 seconds
diff --git a/llvm/utils/lit/tests/ignore-fail.py b/llvm/utils/lit/tests/ignore-fail.py
deleted file mode 100644
index 494c6e092c906..0000000000000
--- a/llvm/utils/lit/tests/ignore-fail.py
+++ /dev/null
@@ -1,20 +0,0 @@
-# Check that --ignore-fail produces exit status 0 despite various kinds of
-# test failures but doesn't otherwise suppress those failures.
-
-# RUN: not %{lit} %{inputs}/ignore-fail | FileCheck %s
-# RUN: %{lit} --ignore-fail %{inputs}/ignore-fail | FileCheck %s
-
-# END.
-
-# CHECK-DAG: FAIL: ignore-fail :: fail.txt
-# CHECK-DAG: UNRESOLVED: ignore-fail :: unresolved.txt
-# CHECK-DAG: XFAIL: ignore-fail :: xfail.txt
-# CHECK-DAG: XPASS: ignore-fail :: xpass.txt
-
-# CHECK: Testing Time:
-# CHECK: Total Discovered Tests:
-# CHECK-NEXT: Expectedly Failed : 1 {{\([0-9]*\.[0-9]*%\)}}
-# CHECK-NEXT: Unresolved : 1 {{\([0-9]*\.[0-9]*%\)}}
-# CHECK-NEXT: Failed : 1 {{\([0-9]*\.[0-9]*%\)}}
-# CHECK-NEXT: Unexpectedly Passed: 1 {{\([0-9]*\.[0-9]*%\)}}
-# CHECK-NOT: {{.}}
diff --git a/llvm/utils/lit/tests/lit-opts.py b/llvm/utils/lit/tests/lit-opts.py
deleted file mode 100644
index 0759c1d17be58..0000000000000
--- a/llvm/utils/lit/tests/lit-opts.py
+++ /dev/null
@@ -1,33 +0,0 @@
-# Check cases where LIT_OPTS has no effect.
-#
-# RUN: %{lit} -s %{inputs}/lit-opts | FileCheck %s
-# RUN: env LIT_OPTS= %{lit} -s %{inputs}/lit-opts | FileCheck %s
-# RUN: env LIT_OPTS=-s %{lit} -s %{inputs}/lit-opts | FileCheck %s
-
-# Check that LIT_OPTS can override command-line options.
-#
-# RUN: env LIT_OPTS=-a \
-# RUN: %{lit} -s %{inputs}/lit-opts \
-# RUN: | FileCheck -check-prefix=SHOW-ALL -DVAR=default %s
-
-# Check that LIT_OPTS understands multiple options with arbitrary spacing.
-#
-# RUN: env LIT_OPTS='-v -a -Dvar=foobar' \
-# RUN: %{lit} -s %{inputs}/lit-opts \
-# RUN: | FileCheck -check-prefix=SHOW-ALL -DVAR=foobar %s
-
-# Check that LIT_OPTS parses shell-like quotes and escapes.
-#
-# RUN: env LIT_OPTS='-v -a -Dvar="foo bar"\ baz' \
-# RUN: %{lit} -s %{inputs}/lit-opts \
-# RUN: | FileCheck -check-prefix=SHOW-ALL -DVAR="foo bar baz" %s
-
-# CHECK: Testing: 1 tests
-# CHECK-NOT: PASS
-# CHECK: Passed: 1
-
-# SHOW-ALL: Testing: 1 tests
-# SHOW-ALL: PASS: lit-opts :: test.txt (1 of 1)
-# SHOW-ALL: echo [[VAR]]
-# SHOW-ALL-NOT: PASS
-# SHOW-ALL: Passed: 1
diff --git a/llvm/utils/lit/tests/lld-features.py b/llvm/utils/lit/tests/lld-features.py
deleted file mode 100644
index d1c360eaef1c3..0000000000000
--- a/llvm/utils/lit/tests/lld-features.py
+++ /dev/null
@@ -1,6 +0,0 @@
-## Show that each of the LLD variants detected by use_lld comes with its own
-## feature.
-
-# RUN: %{lit} %{inputs}/lld-features 2>&1 | FileCheck %s -DDIR=%p
-
-# CHECK: Passed: 4
diff --git a/llvm/utils/lit/tests/max-failures.py b/llvm/utils/lit/tests/max-failures.py
deleted file mode 100644
index f14c9d598d609..0000000000000
--- a/llvm/utils/lit/tests/max-failures.py
+++ /dev/null
@@ -1,28 +0,0 @@
-# UNSUPPORTED: system-windows
-# FIXME: This test is flaky and hangs randomly on multi-core systems.
-# See https://github.com/llvm/llvm-project/issues/56336 for more
-# details.
-# REQUIRES: less-than-4-cpu-cores-in-parallel
-
-# Check the behavior of --max-failures option.
-#
-# RUN: not %{lit} %{inputs}/max-failures > %t.out 2>&1
-# RUN: not %{lit} --max-failures=1 %{inputs}/max-failures >> %t.out 2>&1
-# RUN: not %{lit} --max-failures=2 %{inputs}/max-failures >> %t.out 2>&1
-# RUN: not %{lit} --max-failures=0 %{inputs}/max-failures 2>> %t.out
-# RUN: FileCheck < %t.out %s
-#
-
-# CHECK-NOT: reached maximum number of test failures
-# CHECK-NOT: Skipped
-# CHECK: Failed: 3
-
-# CHECK: reached maximum number of test failures, skipping remaining tests
-# CHECK: Skipped: 2
-# CHECK: Failed : 1
-
-# CHECK: reached maximum number of test failures, skipping remaining tests
-# CHECK: Skipped: 1
-# CHECK: Failed : 2
-
-# CHECK: error: argument --max-failures: requires positive integer, but found '0'
diff --git a/llvm/utils/lit/tests/max-time.py b/llvm/utils/lit/tests/max-time.py
deleted file mode 100644
index a416c8da3eaff..0000000000000
--- a/llvm/utils/lit/tests/max-time.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# UNSUPPORTED: system-windows
-
-# Test overall lit timeout (--max-time).
-#
-# RUN: %{lit} %{inputs}/max-time --max-time=5 2>&1 | FileCheck %s
-
-# CHECK: reached timeout, skipping remaining tests
-# CHECK: Skipped: 1
-# CHECK: Passed : 1
diff --git a/llvm/utils/lit/tests/parallelism-groups.py b/llvm/utils/lit/tests/parallelism-groups.py
deleted file mode 100644
index 58293803746e3..0000000000000
--- a/llvm/utils/lit/tests/parallelism-groups.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# Check that we do not crash if a parallelism group is set to None. Permits
-# usage of the following pattern.
-#
-# [lit.common.cfg]
-# lit_config.parallelism_groups['my_group'] = None
-# if <condition>:
-# lit_config.parallelism_groups['my_group'] = 3
-#
-# [project/lit.cfg]
-# config.parallelism_group = 'my_group'
-#
-
-# RUN: %{lit} -j2 %{inputs}/parallelism-groups | FileCheck %s
-
-# CHECK: -- Testing: 2 tests, 2 workers --
-# CHECK-DAG: PASS: parallelism-groups :: test1.txt
-# CHECK-DAG: PASS: parallelism-groups :: test2.txt
-# CHECK: Passed: 2
diff --git a/llvm/utils/lit/tests/pass-test-update.py b/llvm/utils/lit/tests/pass-test-update.py
deleted file mode 100644
index 2e9f1be2bccab..0000000000000
--- a/llvm/utils/lit/tests/pass-test-update.py
+++ /dev/null
@@ -1,34 +0,0 @@
-# RUN: %{lit} --update-tests --ignore-fail -v %S/Inputs/pass-test-update | FileCheck %s --implicit-check-not Exception
-
-# CHECK: UNRESOLVED: pass-test-update :: fail.test (1 of 5)
-# CHECK: ******************** TEST 'pass-test-update :: fail.test' FAILED ********************
-# CHECK: # {{R}}UN: at line 1
-# CHECK: not echo "fail"
-# CHECK: # executed command: not echo fail
-# CHECK: # .---command stdout------------
-# CHECK: # | fail
-# CHECK: # `-----------------------------
-# CHECK: # error: command failed with exit status: 1
-# CHECK: Exception occurred in test updater:
-# CHECK: Traceback (most recent call last):
-# CHECK: File {{.*}}, line {{.*}}, in {{.*}}
-# CHECK: update_output = test_updater(result, test, commands)
-# CHECK: File "{{.*}}{{/|\\}}should_not_run.py", line {{.*}}, in should_not_run
-# CHECK: raise Exception("this test updater should only run on failure")
-# CHECK: Exception: this test updater should only run on failure
-# CHECK: ********************
-# CHECK: PASS: pass-test-update :: pass-silent.test (2 of 5)
-# CHECK: PASS: pass-test-update :: pass.test (3 of 5)
-# CHECK: {{X}}FAIL: pass-test-update :: xfail.test (4 of 5)
-# CHECK: XPASS: pass-test-update :: xpass.test (5 of 5)
-# CHECK: ******************** TEST 'pass-test-update :: xpass.test' FAILED ********************
-# CHECK: Exit Code: 0
-# CHECK: Command Output (stdout):
-# CHECK: --
-# CHECK: # {{R}}UN: at line 2
-# CHECK: echo "accidentally passed"
-# CHECK: # executed command: echo 'accidentally passed'
-# CHECK: # .---command stdout------------
-# CHECK: # | accidentally passed
-# CHECK: # `-----------------------------
-# CHECK: ********************
diff --git a/llvm/utils/lit/tests/per-test-coverage-by-lit-cfg.py b/llvm/utils/lit/tests/per-test-coverage-by-lit-cfg.py
deleted file mode 100644
index b3af606c52f18..0000000000000
--- a/llvm/utils/lit/tests/per-test-coverage-by-lit-cfg.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# Test if lit_config.per_test_coverage in lit.cfg sets individual test case coverage.
-
-# RUN: %{lit} -a -Dexecute_external=False \
-# RUN: %{inputs}/per-test-coverage-by-lit-cfg/per-test-coverage-by-lit-cfg.py | \
-# RUN: FileCheck -DOUT=stdout %s
-
-# RUN: %{lit} -a -Dexecute_external=True \
-# RUN: %{inputs}/per-test-coverage-by-lit-cfg/per-test-coverage-by-lit-cfg.py | \
-# RUN: FileCheck -DOUT=stderr %s
-
-# CHECK: {{^}}PASS: per-test-coverage-by-lit-cfg :: per-test-coverage-by-lit-cfg.py ({{[^)]*}})
-# CHECK: Command Output ([[OUT]]):
-# CHECK-NEXT: --
-# CHECK: export
-# CHECK: LLVM_PROFILE_FILE=per-test-coverage-by-lit-cfg0.profraw
-# CHECK: per-test-coverage-by-lit-cfg.py
-# CHECK: {{RUN}}: at line 2
-# CHECK: export
-# CHECK: LLVM_PROFILE_FILE=per-test-coverage-by-lit-cfg1.profraw
-# CHECK: per-test-coverage-by-lit-cfg.py
-# CHECK: {{RUN}}: at line 3
-# CHECK: export
-# CHECK: LLVM_PROFILE_FILE=per-test-coverage-by-lit-cfg2.profraw
-# CHECK: per-test-coverage-by-lit-cfg.py
diff --git a/llvm/utils/lit/tests/per-test-coverage.py b/llvm/utils/lit/tests/per-test-coverage.py
deleted file mode 100644
index ba513554ae76e..0000000000000
--- a/llvm/utils/lit/tests/per-test-coverage.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# Test LLVM_PROFILE_FILE is set when --per-test-coverage is passed to command line.
-
-# RUN: %{lit} -a --per-test-coverage -Dexecute_external=False \
-# RUN: %{inputs}/per-test-coverage/per-test-coverage.py | \
-# RUN: FileCheck -DOUT=stdout %s
-
-# RUN: %{lit} -a --per-test-coverage -Dexecute_external=True \
-# RUN: %{inputs}/per-test-coverage/per-test-coverage.py | \
-# RUN: FileCheck -DOUT=stderr %s
-
-# CHECK: {{^}}PASS: per-test-coverage :: per-test-coverage.py ({{[^)]*}})
-# CHECK: Command Output ([[OUT]]):
-# CHECK-NEXT: --
-# CHECK: export
-# CHECK: LLVM_PROFILE_FILE=per-test-coverage0.profraw
-# CHECK: per-test-coverage.py
-# CHECK: {{RUN}}: at line 2
-# CHECK: export
-# CHECK: LLVM_PROFILE_FILE=per-test-coverage1.profraw
-# CHECK: per-test-coverage.py
-# CHECK: {{RUN}}: at line 3
-# CHECK: export
-# CHECK: LLVM_PROFILE_FILE=per-test-coverage2.profraw
-# CHECK: per-test-coverage.py
diff --git a/llvm/utils/lit/tests/print-relative-path.py b/llvm/utils/lit/tests/print-relative-path.py
deleted file mode 100644
index c66f0150ca70f..0000000000000
--- a/llvm/utils/lit/tests/print-relative-path.py
+++ /dev/null
@@ -1,18 +0,0 @@
-# RUN: %{lit} --ignore-fail --show-pass %{inputs}/print-relative-path | FileCheck --check-prefix=CHECK-DEFAULT %s
-# RUN: %{lit} --ignore-fail --show-pass -r %{inputs}/print-relative-path | FileCheck --check-prefix=CHECK-RELATIVE %s
-# RUN: %{lit} --ignore-fail --show-pass --relative-paths %{inputs}/print-relative-path | FileCheck --check-prefix=CHECK-RELATIVE %s
-
-
-# CHECK-DEFAULT: PASS: print-relative-path :: test.txt (1 of 2)
-# CHECK-DEFAULT: FAIL: print-relative-path :: test2.txt (2 of 2)
-# CHECK-DEFAULT: Passed Tests (1):
-# CHECK-DEFAULT: print-relative-path :: test.txt
-# CHECK-DEFAULT: Failed Tests (1):
-# CHECK-DEFAULT: print-relative-path :: test2.txt
-
-# CHECK-RELATIVE: PASS: print-relative-path :: test.txt (1 of 2)
-# CHECK-RELATIVE: FAIL: print-relative-path :: test2.txt (2 of 2)
-# CHECK-RELATIVE: Passed Tests (1):
-# CHECK-RELATIVE: Inputs{{[/\\]}}print-relative-path{{[/\\]}}test.txt
-# CHECK-RELATIVE: Failed Tests (1):
-# CHECK-RELATIVE: Inputs{{[/\\]}}print-relative-path{{[/\\]}}test2.txt
diff --git a/llvm/utils/lit/tests/progress-bar.py b/llvm/utils/lit/tests/progress-bar.py
deleted file mode 100644
index 89f4cba60d6ae..0000000000000
--- a/llvm/utils/lit/tests/progress-bar.py
+++ /dev/null
@@ -1,14 +0,0 @@
-# Check the simple progress bar.
-
-# RUN: not %{lit} -s %{inputs}/progress-bar > %t.out
-# RUN: FileCheck < %t.out %s
-#
-# CHECK: Testing:
-# CHECK: FAIL: progress-bar :: test-1.txt (1 of 4)
-# CHECK: Testing: 0.. 10.. 20
-# CHECK: FAIL: progress-bar :: test-2.txt (2 of 4)
-# CHECK: Testing: 0.. 10.. 20.. 30.. 40..
-# CHECK: FAIL: progress-bar :: test-3.txt (3 of 4)
-# CHECK: Testing: 0.. 10.. 20.. 30.. 40.. 50.. 60.. 70
-# CHECK: FAIL: progress-bar :: test-4.txt (4 of 4)
-# CHECK: Testing: 0.. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90..
diff --git a/llvm/utils/lit/tests/reorder.py b/llvm/utils/lit/tests/reorder.py
deleted file mode 100644
index 8ebeac393d557..0000000000000
--- a/llvm/utils/lit/tests/reorder.py
+++ /dev/null
@@ -1,22 +0,0 @@
-## Check that we can reorder test runs.
-
-# RUN: cp %{inputs}/reorder/lit_test_times %{inputs}/reorder/.lit_test_times.txt
-# RUN: not %{lit-no-order-opt} %{inputs}/reorder > %t.out
-# RUN: FileCheck --check-prefix=TIMES < %{inputs}/reorder/.lit_test_times.txt %s
-# RUN: FileCheck < %t.out %s
-# END.
-
-# TIMES: not-executed.txt
-# TIMES-NEXT: subdir/ccc.txt
-# TIMES-NEXT: bbb.txt
-# TIMES-NEXT: -{{.*}} fff.txt
-# TIMES-NEXT: aaa.txt
-# TIMES-NEXT: new-test.txt
-
-# CHECK: -- Testing: 5 tests, 1 workers --
-# CHECK-NEXT: FAIL: reorder :: fff.txt
-# CHECK-NEXT: PASS: reorder :: subdir/ccc.txt
-# CHECK-NEXT: PASS: reorder :: bbb.txt
-# CHECK-NEXT: PASS: reorder :: aaa.txt
-# CHECK-NEXT: PASS: reorder :: new-test.txt
-# CHECK: Passed: 4
diff --git a/llvm/utils/lit/tests/selecting.py b/llvm/utils/lit/tests/selecting.py
deleted file mode 100644
index b022190194041..0000000000000
--- a/llvm/utils/lit/tests/selecting.py
+++ /dev/null
@@ -1,113 +0,0 @@
-# RUN: %{lit} %{inputs}/discovery | FileCheck --check-prefix=CHECK-BASIC %s
-# CHECK-BASIC: Testing: 5 tests
-
-
-# Check that we exit with an error if we do not discover any tests, even with --allow-empty-runs.
-#
-# RUN: not %{lit} %{inputs}/nonexistent 2>&1 | FileCheck --check-prefix=CHECK-BAD-PATH %s
-# RUN: not %{lit} %{inputs}/nonexistent --allow-empty-runs 2>&1 | FileCheck --check-prefix=CHECK-BAD-PATH %s
-# CHECK-BAD-PATH: error: did not discover any tests for provided path(s)
-
-# Check that we exit with an error if we filter out all tests, but allow it with --allow-empty-runs.
-# Check that we exit with an error if we skip all tests, but allow it with --allow-empty-runs.
-#
-# RUN: not %{lit} --filter 'nonexistent' %{inputs}/discovery 2>&1 | FileCheck --check-prefixes=CHECK-BAD-FILTER,CHECK-BAD-FILTER-ERROR %s
-# RUN: %{lit} --filter 'nonexistent' --allow-empty-runs %{inputs}/discovery 2>&1 | FileCheck --check-prefixes=CHECK-BAD-FILTER,CHECK-BAD-FILTER-ALLOW %s
-# RUN: not %{lit} --filter-out '.*' %{inputs}/discovery 2>&1 | FileCheck --check-prefixes=CHECK-BAD-FILTER,CHECK-BAD-FILTER-ERROR %s
-# RUN: %{lit} --filter-out '.*' --allow-empty-runs %{inputs}/discovery 2>&1 | FileCheck --check-prefixes=CHECK-BAD-FILTER,CHECK-BAD-FILTER-ALLOW %s
-# CHECK-BAD-FILTER: error: filter did not match any tests (of 5 discovered).
-# CHECK-BAD-FILTER-ERROR: Use '--allow-empty-runs' to suppress this error.
-# CHECK-BAD-FILTER-ALLOW: Suppressing error because '--allow-empty-runs' was specified.
-
-# Check that regex-filtering works, is case-insensitive, and can be configured via env var.
-#
-# RUN: %{lit} --filter 'o[a-z]e' %{inputs}/discovery | FileCheck --check-prefix=CHECK-FILTER %s
-# RUN: %{lit} --filter 'O[A-Z]E' %{inputs}/discovery | FileCheck --check-prefix=CHECK-FILTER %s
-# RUN: env LIT_FILTER='o[a-z]e' %{lit} %{inputs}/discovery | FileCheck --check-prefix=CHECK-FILTER %s
-# RUN: %{lit} --filter-out 'test-t[a-z]' %{inputs}/discovery | FileCheck --check-prefix=CHECK-FILTER %s
-# RUN: %{lit} --filter-out 'test-t[A-Z]' %{inputs}/discovery | FileCheck --check-prefix=CHECK-FILTER %s
-# RUN: env LIT_FILTER_OUT='test-t[a-z]' %{lit} %{inputs}/discovery | FileCheck --check-prefix=CHECK-FILTER %s
-# CHECK-FILTER: Testing: 2 of 5 tests
-# CHECK-FILTER: Excluded: 3
-
-
-# Check that maximum counts work
-#
-# RUN: %{lit} --max-tests 3 %{inputs}/discovery | FileCheck --check-prefix=CHECK-MAX %s
-# CHECK-MAX: Testing: 3 of 5 tests
-# CHECK-MAX: Excluded: 2
-
-
-# Check that sharding partitions the testsuite in a way that distributes the
-# rounding error nicely (i.e. 5/3 => 2 2 1, not 1 1 3 or whatever)
-#
-# RUN: %{lit} --num-shards 3 --run-shard 1 %{inputs}/discovery >%t.out 2>%t.err
-# RUN: FileCheck --check-prefix=CHECK-SHARD0-ERR < %t.err %s
-# RUN: FileCheck --check-prefix=CHECK-SHARD0-OUT < %t.out %s
-# CHECK-SHARD0-ERR: note: Selecting shard 1/3 = size 2/5 = tests #(3*k)+1 = [1, 4]
-# CHECK-SHARD0-OUT: Testing: 2 of 5 tests
-# CHECK-SHARD0-OUT: Excluded: 3
-#
-# RUN: %{lit} --num-shards 3 --run-shard 2 %{inputs}/discovery >%t.out 2>%t.err
-# RUN: FileCheck --check-prefix=CHECK-SHARD1-ERR < %t.err %s
-# RUN: FileCheck --check-prefix=CHECK-SHARD1-OUT < %t.out %s
-# CHECK-SHARD1-ERR: note: Selecting shard 2/3 = size 2/5 = tests #(3*k)+2 = [2, 5]
-# CHECK-SHARD1-OUT: Testing: 2 of 5 tests
-#
-# RUN: %{lit} --num-shards 3 --run-shard 3 %{inputs}/discovery >%t.out 2>%t.err
-# RUN: FileCheck --check-prefix=CHECK-SHARD2-ERR < %t.err %s
-# RUN: FileCheck --check-prefix=CHECK-SHARD2-OUT < %t.out %s
-# CHECK-SHARD2-ERR: note: Selecting shard 3/3 = size 1/5 = tests #(3*k)+3 = [3]
-# CHECK-SHARD2-OUT: Testing: 1 of 5 tests
-
-
-# Check that sharding via env vars works.
-#
-# RUN: env LIT_NUM_SHARDS=3 LIT_RUN_SHARD=1 %{lit} %{inputs}/discovery >%t.out 2>%t.err
-# RUN: FileCheck --check-prefix=CHECK-SHARD0-ENV-ERR < %t.err %s
-# RUN: FileCheck --check-prefix=CHECK-SHARD0-ENV-OUT < %t.out %s
-# CHECK-SHARD0-ENV-ERR: note: Selecting shard 1/3 = size 2/5 = tests #(3*k)+1 = [1, 4]
-# CHECK-SHARD0-ENV-OUT: Testing: 2 of 5 tests
-#
-# RUN: env LIT_NUM_SHARDS=3 LIT_RUN_SHARD=2 %{lit} %{inputs}/discovery >%t.out 2>%t.err
-# RUN: FileCheck --check-prefix=CHECK-SHARD1-ENV-ERR < %t.err %s
-# RUN: FileCheck --check-prefix=CHECK-SHARD1-ENV-OUT < %t.out %s
-# CHECK-SHARD1-ENV-ERR: note: Selecting shard 2/3 = size 2/5 = tests #(3*k)+2 = [2, 5]
-# CHECK-SHARD1-ENV-OUT: Testing: 2 of 5 tests
-#
-# RUN: env LIT_NUM_SHARDS=3 LIT_RUN_SHARD=3 %{lit} %{inputs}/discovery >%t.out 2>%t.err
-# RUN: FileCheck --check-prefix=CHECK-SHARD2-ENV-ERR < %t.err %s
-# RUN: FileCheck --check-prefix=CHECK-SHARD2-ENV-OUT < %t.out %s
-# CHECK-SHARD2-ENV-ERR: note: Selecting shard 3/3 = size 1/5 = tests #(3*k)+3 = [3]
-# CHECK-SHARD2-ENV-OUT: Testing: 1 of 5 tests
-
-
-# Check that providing more shards than tests results in 1 test per shard
-# until we run out, then 0.
-#
-# RUN: %{lit} --num-shards 100 --run-shard 2 %{inputs}/discovery >%t.out 2>%t.err
-# RUN: FileCheck --check-prefix=CHECK-SHARD-BIG-ERR1 < %t.err %s
-# RUN: FileCheck --check-prefix=CHECK-SHARD-BIG-OUT1 < %t.out %s
-# CHECK-SHARD-BIG-ERR1: note: Selecting shard 2/100 = size 1/5 = tests #(100*k)+2 = [2]
-# CHECK-SHARD-BIG-OUT1: Testing: 1 of 5 tests
-#
-# RUN: %{lit} --num-shards 100 --run-shard 6 %{inputs}/discovery >%t.out 2>%t.err
-# RUN: FileCheck --check-prefix=CHECK-SHARD-BIG-ERR2 < %t.err %s
-# CHECK-SHARD-BIG-ERR2: note: Selecting shard 6/100 = size 0/5 = tests #(100*k)+6 = []
-# CHECK-SHARD-BIG-ERR2: warning: shard does not contain any tests. Consider decreasing the number of shards.
-#
-# RUN: %{lit} --num-shards 100 --run-shard 50 %{inputs}/discovery >%t.out 2>%t.err
-# RUN: FileCheck --check-prefix=CHECK-SHARD-BIG-ERR3 < %t.err %s
-# CHECK-SHARD-BIG-ERR3: note: Selecting shard 50/100 = size 0/5 = tests #(100*k)+50 = []
-# CHECK-SHARD-BIG-ERR3: warning: shard does not contain any tests. Consider decreasing the number of shards.
-
-
-# Check that range constraints are enforced
-#
-# RUN: not %{lit} --num-shards 0 --run-shard 2 %{inputs}/discovery >%t.out 2>%t.err
-# RUN: FileCheck --check-prefix=CHECK-SHARD-ERR < %t.err %s
-# CHECK-SHARD-ERR: error: argument --num-shards: requires positive integer, but found '0'
-#
-# RUN: not %{lit} --num-shards 3 --run-shard 4 %{inputs}/discovery >%t.out 2>%t.err
-# RUN: FileCheck --check-prefix=CHECK-SHARD-ERR2 < %t.err %s
-# CHECK-SHARD-ERR2: error: --run-shard must be between 1 and --num-shards (inclusive)
diff --git a/llvm/utils/lit/tests/shell-parsing.py b/llvm/utils/lit/tests/shell-parsing.py
deleted file mode 100644
index a07e988861fad..0000000000000
--- a/llvm/utils/lit/tests/shell-parsing.py
+++ /dev/null
@@ -1,3 +0,0 @@
-# Just run the ShUtil unit tests.
-#
-# RUN: %{python} -m lit.ShUtil
diff --git a/llvm/utils/lit/tests/show-result-codes.py b/llvm/utils/lit/tests/show-result-codes.py
deleted file mode 100644
index 5d8cd0d9eb9fa..0000000000000
--- a/llvm/utils/lit/tests/show-result-codes.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# Test the --show-<result-code> {pass,unsupported,xfail,...} options.
-#
-# RUN: not %{lit} %{inputs}/show-result-codes | FileCheck %s --check-prefix=NONE
-# RUN: not %{lit} %{inputs}/show-result-codes --show-unsupported | FileCheck %s --check-prefix=ONE
-# RUN: not %{lit} %{inputs}/show-result-codes --show-pass --show-xfail | FileCheck %s --check-prefix=MULTIPLE
-
-# Failing tests are always shown
-# NONE-NOT: Unsupported Tests (1)
-# NONE-NOT: Passed Tests (1)
-# NONE-NOT: Expectedly Failed Tests (1)
-# NONE: Failed Tests (1)
-
-# ONE: Unsupported Tests (1)
-# ONE-NOT: Passed Tests (1)
-# ONE-NOT: Expectedly Failed Tests (1)
-# ONE: Failed Tests (1)
-
-# MULTIPLE-NOT: Unsupported Tests (1)
-# MULTIPLE: Passed Tests (1)
-# MULTIPLE: Expectedly Failed Tests (1)
-# MULTIPLE: Failed Tests (1)
diff --git a/llvm/utils/lit/tests/show-used-features.py b/llvm/utils/lit/tests/show-used-features.py
deleted file mode 100644
index b88c68faca981..0000000000000
--- a/llvm/utils/lit/tests/show-used-features.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# Check that --show-used-features works correctly.
-#
-# RUN: %{lit} %{inputs}/show-used-features --show-used-features | FileCheck %s
-# CHECK: my-require-feature-1 my-require-feature-2 my-require-feature-3
-# CHECK: my-unsupported-feature-1 my-unsupported-feature-2 my-unsupported-feature-3
-# CHECK: my-xfail-feature-1 my-xfail-feature-2 my-xfail-feature-3
-# CHECK: {{my-[{][{]\[require\]\*[}][}]-feature-4}}
-# CHECK: {{my-[{][{]\[unsupported\]\*[}][}]-feature-4}}
-# CHECK: {{my-[{][{]\[xfail\]\*[}][}]-feature-4}}
diff --git a/llvm/utils/lit/tests/shtest-cat.py b/llvm/utils/lit/tests/shtest-cat.py
deleted file mode 100644
index 9763f9fbf1a9d..0000000000000
--- a/llvm/utils/lit/tests/shtest-cat.py
+++ /dev/null
@@ -1,23 +0,0 @@
-## Test the cat command.
-#
-# RUN: not %{lit} -v %{inputs}/shtest-cat \
-# RUN: | FileCheck -match-full-lines %s
-# END.
-
-# CHECK: FAIL: shtest-cat :: cat-error-0.txt ({{[^)]*}})
-# CHECK: cat -b temp1.txt
-# CHECK: # .---command stderr{{-*}}
-# CHECK-NEXT: # | Unsupported: 'cat': option -b not recognized
-# CHECK: # error: command failed with exit status: 1
-
-# CHECK: FAIL: shtest-cat :: cat-error-1.txt ({{[^)]*}})
-# CHECK: cat temp1.txt
-# CHECK: # .---command stderr{{-*}}
-# CHECK-NEXT: # | [Errno 2] No such file or directory: 'temp1.txt'
-# CHECK: # error: command failed with exit status: 1
-
-# CHECK: PASS: shtest-cat :: cat.txt ({{[^)]*}})
-
-# CHECK: Total Discovered Tests: 3
-# CHECK-NEXT: Passed: 1 {{\([0-9]*\.[0-9]*%\)}}
-# CHECK-NEXT: Failed: 2 {{\([0-9]*\.[0-9]*%\)}}
diff --git a/llvm/utils/lit/tests/shtest-define.py b/llvm/utils/lit/tests/shtest-define.py
deleted file mode 100644
index 8c9309804ccea..0000000000000
--- a/llvm/utils/lit/tests/shtest-define.py
+++ /dev/null
@@ -1,168 +0,0 @@
-# We're using DEFINE/REDEFINE to help us write tests for DEFINE/REDEFINE.
-
-# RUN: echo '-- Available Tests --' > %t.tests.actual.txt
-
-# DEFINE: %{my-inputs} = %{inputs}/shtest-define
-
-# DEFINE: %{test} =
-# DEFINE: %{lit-pre} =
-# DEFINE: %{lit-args} =
-# DEFINE: %{fc-args} =
-# DEFINE: %{run-test} = \
-# DEFINE: %{lit-pre} %{lit} -va %{lit-args} %{my-inputs}/%{test} 2>&1 | \
-# DEFINE: FileCheck -match-full-lines %{fc-args} %{my-inputs}/%{test} \
-# DEFINE: -dump-input-filter=all -vv -color
-# DEFINE: %{record-test} = \
-# DEFINE: echo ' shtest-define :: %{test}' >> %t.tests.actual.txt
-# DEFINE: %{run-and-record-test} = %{run-test} && %{record-test}
-
-# REDEFINE: %{lit-pre} = not
-#
-# REDEFINE: %{test} = errors/assignment/before-name.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/assignment/between-name-equals.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/assignment/braces-empty.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/assignment/braces-with-dot.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/assignment/braces-with-equals.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/assignment/braces-with-newline.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/assignment/braces-with-number.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/assignment/braces-with-ws.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/assignment/empty.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/assignment/no-equals.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/assignment/no-name.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/assignment/ws-only.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/continuation/empty.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/continuation/end-in-double-backslash.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/continuation/unterminated-define-bad-redefine.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/continuation/unterminated-define-continuation.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/continuation/unterminated-define-redefine.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/continuation/unterminated-define-run.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/continuation/unterminated-define.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/continuation/unterminated-redefine-bad-define.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/continuation/unterminated-redefine-continuation.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/continuation/unterminated-redefine-define.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/continuation/unterminated-redefine-run.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/continuation/unterminated-redefine.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/continuation/unterminated-run-define.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/continuation/unterminated-run-redefine.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/continuation/ws-only.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/defined-check/define-already-by-config.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/defined-check/define-already-by-test.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/defined-check/define-inside-pattern.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/defined-check/define-multiple-exact.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/defined-check/define-multiple-once-exact.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/defined-check/define-prefixes-pattern.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/defined-check/define-suffixes-pattern.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/defined-check/redefine-inside-pattern.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/defined-check/redefine-multiple-exact.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/defined-check/redefine-multiple-once-exact.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/defined-check/redefine-none.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/defined-check/redefine-prefixes-pattern.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/defined-check/redefine-suffixes-pattern.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/location-range.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{test} = errors/no-run.txt
-# RUN: %{run-and-record-test}
-#
-# REDEFINE: %{lit-pre} =
-
-# REDEFINE: %{test} = examples/param-subst.txt
-# RUN: %{run-and-record-test}
-
-# REDEFINE: %{test} = expansion-order.txt
-# RUN: %{run-and-record-test}
-
-# REDEFINE: %{test} = line-number-substitutions.txt
-# RUN: %{run-and-record-test}
-
-# REDEFINE: %{test} = name-chars.txt
-# RUN: %{run-and-record-test}
-
-# REDEFINE: %{test} = recursiveExpansionLimit.txt
-#
-# REDEFINE: %{fc-args} = -check-prefix=CHECK-NON-RECUR
-# RUN: %{run-test}
-#
-# REDEFINE: %{lit-args} = -Drecur=2
-# REDEFINE: %{fc-args} = -check-prefix=CHECK-RECUR
-# RUN: %{run-test}
-#
-# RUN: %{record-test}
-# REDEFINE: %{lit-args} =
-# REDEFINE: %{fc-args} =
-
-# Check that per-test changes to substitutions don't affect other tests in the
-# same LIT invocation.
-#
-# RUN: %{lit} -va %{my-inputs}/shared-substs-*.txt 2>&1 | \
-# RUN: FileCheck -check-prefix=SHARED-SUBSTS -match-full-lines %s
-#
-# SHARED-SUBSTS:# | shared-substs-0.txt
-# SHARED-SUBSTS:# | GLOBAL: World
-# SHARED-SUBSTS:# | LOCAL0: LOCAL0:Hello LOCAL0:World
-# SHARED-SUBSTS:# | LOCAL0: subst
-#
-# SHARED-SUBSTS:# | shared-substs-1.txt
-# SHARED-SUBSTS:# | GLOBAL: World
-# SHARED-SUBSTS:# | LOCAL1: LOCAL1:Hello LOCAL1:World
-# SHARED-SUBSTS:# | LOCAL1: subst
-#
-# REDEFINE: %{test} = shared-substs-0.txt
-# RUN: %{record-test}
-# REDEFINE: %{test} = shared-substs-1.txt
-# RUN: %{record-test}
-
-# REDEFINE: %{test} = value-equals.txt
-# RUN: %{run-and-record-test}
-
-# REDEFINE: %{test} = value-escaped.txt
-# RUN: %{run-and-record-test}
-
-# REDEFINE: %{fc-args} = -strict-whitespace
-# REDEFINE: %{test} = ws-and-continuations.txt
-# RUN: %{run-and-record-test}
-# REDEFINE: %{fc-args} =
-
-# Make sure we didn't forget to run something.
-#
-# RUN: %{lit} --show-tests %{my-inputs} > %t.tests.expected.txt
-# RUN: diff -u -w %t.tests.expected.txt %t.tests.actual.txt
diff --git a/llvm/utils/lit/tests/shtest-encoding.py b/llvm/utils/lit/tests/shtest-encoding.py
deleted file mode 100644
index dfc987f6df7ee..0000000000000
--- a/llvm/utils/lit/tests/shtest-encoding.py
+++ /dev/null
@@ -1,3 +0,0 @@
-# RUN: true
-
-# Here is a string that cannot be decoded in line mode: �.
diff --git a/llvm/utils/lit/tests/shtest-env-negative.py b/llvm/utils/lit/tests/shtest-env-negative.py
deleted file mode 100644
index 236c6a19e694b..0000000000000
--- a/llvm/utils/lit/tests/shtest-env-negative.py
+++ /dev/null
@@ -1,49 +0,0 @@
-## Test the env command (failing tests).
-
-# RUN: not %{lit} -v %{inputs}/shtest-env-negative \
-# RUN: | FileCheck -match-full-lines %s
-#
-# END.
-
-## Test the env command's expected failures.
-
-# CHECK: -- Testing: 7 tests{{.*}}
-
-# CHECK: FAIL: shtest-env :: env-calls-cd.txt ({{[^)]*}})
-# CHECK: env -u FOO BAR=3 cd foobar
-# CHECK: # executed command: env -u FOO BAR=3 cd foobar
-# CHECK: # error: command failed with exit status: {{.*}}
-
-# CHECK: FAIL: shtest-env :: env-calls-colon.txt ({{[^)]*}})
-# CHECK: env -u FOO BAR=3 :
-# CHECK: # executed command: env -u FOO BAR=3 :
-# CHECK: # error: command failed with exit status: {{.*}}
-
-# CHECK: FAIL: shtest-env :: env-calls-echo.txt ({{[^)]*}})
-# CHECK: env -u FOO BAR=3 echo hello world
-# CHECK: # executed command: env -u FOO BAR=3 echo hello world
-# CHECK: # error: command failed with exit status: {{.*}}
-
-# CHECK: FAIL: shtest-env :: env-calls-export.txt ({{[^)]*}})
-# CHECK: env -u FOO BAR=3 export BAZ=3
-# CHECK: # executed command: env -u FOO BAR=3 export BAZ=3
-# CHECK: # error: command failed with exit status: {{.*}}
-
-# CHECK: FAIL: shtest-env :: env-calls-mkdir.txt ({{[^)]*}})
-# CHECK: env -u FOO BAR=3 mkdir foobar
-# CHECK: # executed command: env -u FOO BAR=3 mkdir foobar
-# CHECK: # error: command failed with exit status: {{.*}}
-
-# CHECK: FAIL: shtest-env :: env-calls-not-builtin.txt ({{[^)]*}})
-# CHECK: env -u FOO BAR=3 not rm {{.+}}.no-such-file
-# CHECK: # executed command: env -u FOO BAR=3 not rm {{.+}}.no-such-file{{.*}}
-# CHECK: # error: command failed with exit status: {{.*}}
-
-# CHECK: FAIL: shtest-env :: env-calls-rm.txt ({{[^)]*}})
-# CHECK: env -u FOO BAR=3 rm foobar
-# CHECK: # executed command: env -u FOO BAR=3 rm foobar
-# CHECK: # error: command failed with exit status: {{.*}}
-
-# CHECK: Total Discovered Tests: 7
-# CHECK: Failed: 7 {{\([0-9]*\.[0-9]*%\)}}
-# CHECK-NOT: {{.}}
diff --git a/llvm/utils/lit/tests/shtest-env-path.py b/llvm/utils/lit/tests/shtest-env-path.py
deleted file mode 100644
index 7f04756ed6ad5..0000000000000
--- a/llvm/utils/lit/tests/shtest-env-path.py
+++ /dev/null
@@ -1,13 +0,0 @@
-## Tests env command for setting the PATH variable.
-
-# The test is using /bin/sh. Limit to system known to have /bin/sh.
-# REQUIRES: system-linux || system-darwin
-
-# RUN: %{lit} -a %{inputs}/shtest-env-path/path.txt \
-# RUN: | FileCheck -match-full-lines %s
-#
-# END.
-
-# CHECK: -- Testing: 1 tests{{.*}}
-# CHECK: PASS: shtest-env-path :: path.txt (1 of 1)
-# CHECK: --
diff --git a/llvm/utils/lit/tests/shtest-env-positive.py b/llvm/utils/lit/tests/shtest-env-positive.py
deleted file mode 100644
index 62e15dd9ad492..0000000000000
--- a/llvm/utils/lit/tests/shtest-env-positive.py
+++ /dev/null
@@ -1,81 +0,0 @@
-## Test the env command (passing tests).
-
-# RUN: %{lit} -a %{inputs}/shtest-env-positive \
-# RUN: | FileCheck -match-full-lines %s
-#
-# END.
-
-## Test the env command's successful executions.
-
-# CHECK: -- Testing: 11 tests{{.*}}
-
-# CHECK: PASS: shtest-env :: env-args-last-is-assign.txt ({{[^)]*}})
-# CHECK: env FOO=1
-# CHECK: # executed command: env FOO=1
-# CHECK-NOT: # error:
-# CHECK: --
-
-# CHECK: PASS: shtest-env :: env-args-last-is-u-arg.txt ({{[^)]*}})
-# CHECK: env -u FOO
-# CHECK: # executed command: env -u FOO
-# CHECK-NOT: # error:
-# CHECK: --
-
-# CHECK: PASS: shtest-env :: env-args-last-is-u.txt ({{[^)]*}})
-# CHECK: env -u
-# CHECK: # executed command: env -u
-# CHECK-NOT: # error:
-# CHECK: --
-
-# CHECK: PASS: shtest-env :: env-args-nested-none.txt ({{[^)]*}})
-# CHECK: env env env
-# CHECK: # executed command: env env env
-# CHECK-NOT: # error:
-# CHECK: --
-
-# CHECK: PASS: shtest-env :: env-calls-env.txt ({{[^)]*}})
-# CHECK: env env | {{.*}}
-# CHECK: # executed command: env env
-# CHECK-NOT: # error:
-# CHECK: --
-
-# CHECK: PASS: shtest-env :: env-current-testcase.txt ({{[^)]*}})
-# CHECK: # executed command: bash -c 'echo $LIT_CURRENT_TESTCASE'
-# CHECK-NOT: # error:
-# CHECK: --
-
-# CHECK: PASS: shtest-env :: env-i.txt ({{[^)]*}})
-# CHECK: env -i | {{.*}}
-# CHECK: # executed command: env -i
-# CHECK-NOT: # error:
-# CHECK: --
-
-# CHECK: PASS: shtest-env :: env-no-subcommand.txt ({{[^)]*}})
-# CHECK: env | {{.*}}
-# CHECK: # executed command: env
-# CHECK: env FOO=2 BAR=1 | {{.*}}
-# CHECK: # executed command: env FOO=2 BAR=1
-# CHECK-NOT: # error:
-# CHECK: --
-
-# CHECK: PASS: shtest-env :: env-u.txt ({{[^)]*}})
-# CHECK: env -u FOO | {{.*}}
-# CHECK: # executed command: env -u FOO
-# CHECK-NOT: # error:
-# CHECK: --
-
-# CHECK: PASS: shtest-env :: env.txt ({{[^)]*}})
-# CHECK: env A_FOO=999 | {{.*}}
-# CHECK: # executed command: env A_FOO=999
-# CHECK-NOT: # error:
-# CHECK: --
-
-# CHECK: PASS: shtest-env :: mixed.txt ({{[^)]*}})
-# CHECK: env A_FOO=999 -u FOO | {{.*}}
-# CHECK: # executed command: env A_FOO=999 -u FOO
-# CHECK-NOT: # error:
-# CHECK: --
-
-# CHECK: Total Discovered Tests: 11
-# CHECK: Passed: 11 {{\([0-9]*\.[0-9]*%\)}}
-# CHECK-NOT: {{.}}
diff --git a/llvm/utils/lit/tests/shtest-export.py b/llvm/utils/lit/tests/shtest-export.py
deleted file mode 100644
index d45a94a5eb830..0000000000000
--- a/llvm/utils/lit/tests/shtest-export.py
+++ /dev/null
@@ -1,12 +0,0 @@
-## Test the export command.
-
-# RUN: not %{lit} -v %{inputs}/shtest-export \
-# RUN: | FileCheck -match-full-lines %s
-#
-# END.
-
-# CHECK: FAIL: shtest-export :: export-too-many-args.txt {{.*}}
-# CHECK: export FOO=1 BAR=2
-# CHECK: # executed command: export FOO=1 BAR=2
-# CHECK: # | 'export' supports only one argument
-# CHECK: # error: command failed with exit status: {{.*}}
diff --git a/llvm/utils/lit/tests/shtest-external-shell-kill.py b/llvm/utils/lit/tests/shtest-external-shell-kill.py
deleted file mode 100644
index 627708c1a19cd..0000000000000
--- a/llvm/utils/lit/tests/shtest-external-shell-kill.py
+++ /dev/null
@@ -1,36 +0,0 @@
-# This test exercises an external shell use case that, at least at one time,
-# appeared in the following tests:
-#
-# compiler-rt/test/fuzzer/fork-sigusr.test
-# compiler-rt/test/fuzzer/merge-sigusr.test
-# compiler-rt/test/fuzzer/sigint.test
-# compiler-rt/test/fuzzer/sigusr.test
-#
-# That is, a RUN line can be:
-#
-# cmd & PID=$!
-#
-# It is important that '&' only puts 'cmd' in the background and not the
-# debugging commands that lit inserts before 'cmd'. Otherwise:
-#
-# - The debugging commands might execute later than they are supposed to.
-# - A later 'kill $PID' can kill more than just 'cmd'. We've seen it even
-# manage to terminate the shell running lit.
-#
-# The last FileCheck directive below checks that the debugging commands for the
-# above RUN line are not killed and do execute at the right time.
-
-# RUN: %{lit} -a %{inputs}/shtest-external-shell-kill | %{filter-lit} | FileCheck %s
-# END.
-
-# CHECK: Command Output (stdout):
-# CHECK-NEXT: --
-# CHECK-NEXT: start
-# CHECK-NEXT: end
-# CHECK-EMPTY:
-# CHECK-NEXT: --
-# CHECK-NEXT: Command Output (stderr):
-# CHECK-NEXT: --
-# CHECK-NEXT: echo start # RUN: at line 1
-# CHECK-NEXT: echo start
-# CHECK-NEXT: sleep [[#]] & PID=$! # RUN: at line 2
diff --git a/llvm/utils/lit/tests/shtest-format-argv0.py b/llvm/utils/lit/tests/shtest-format-argv0.py
deleted file mode 100644
index 754410a3f38b9..0000000000000
--- a/llvm/utils/lit/tests/shtest-format-argv0.py
+++ /dev/null
@@ -1,13 +0,0 @@
-# Check that we route argv[0] as it was written, instead of the resolved
-# path. This is important for some tools, in particular '[' which at least on OS
-# X only recognizes that it is in '['-mode when its argv[0] is exactly
-# '['. Otherwise it will refuse to accept the trailing closing bracket.
-#
-# This test is not supported on AIX since `[` is only available as a shell builtin
-# and is not installed under PATH by default.
-# UNSUPPORTED: system-aix
-#
-# RUN: %{lit} -v %{inputs}/shtest-format-argv0 | FileCheck %s
-
-# CHECK: -- Testing:
-# CHECK: PASS: shtest-format-argv0 :: argv0.txt
diff --git a/llvm/utils/lit/tests/shtest-format.py b/llvm/utils/lit/tests/shtest-format.py
deleted file mode 100644
index fda3ef52e8043..0000000000000
--- a/llvm/utils/lit/tests/shtest-format.py
+++ /dev/null
@@ -1,189 +0,0 @@
-# Check the various features of the ShTest format.
-
-# RUN: rm -f %t.xml
-# RUN: not %{lit} -v %{inputs}/shtest-format --xunit-xml-output %t.xml > %t.out
-# RUN: FileCheck < %t.out %s
-# RUN: FileCheck --check-prefix=XUNIT < %t.xml %s
-
-# END.
-
-# CHECK: -- Testing:
-
-# CHECK: FAIL: shtest-format :: external_shell/fail.txt
-# CHECK-NEXT: *** TEST 'shtest-format :: external_shell/fail.txt' FAILED ***
-# CHECK: Command Output (stdout):
-# CHECK-NEXT: --
-# CHECK-NEXT: line 1: failed test output on stdout
-# CHECK-NEXT: line 2: failed test output on stdout
-# CHECK: Command Output (stderr):
-# CHECK-NEXT: --
-# CHECK-NOT: --
-# CHECK: cat{{(_64)?(\.exe)?}}: {{(cannot open does-not-exist|.*does-not-exist.*: No such file or directory)}}
-# CHECK: --
-
-# CHECK: FAIL: shtest-format :: external_shell/fail_with_bad_encoding.txt
-# CHECK-NEXT: *** TEST 'shtest-format :: external_shell/fail_with_bad_encoding.txt' FAILED ***
-# CHECK: Command Output (stdout):
-# CHECK-NEXT: --
-# CHECK-NEXT: a line with bad encoding:
-# CHECK: --
-
-# CHECK: FAIL: shtest-format :: external_shell/fail_with_control_chars.txt
-# CHECK-NEXT: *** TEST 'shtest-format :: external_shell/fail_with_control_chars.txt' FAILED ***
-# CHECK: Command Output (stdout):
-# CHECK-NEXT: --
-# CHECK-NEXT: a line with {{.*}}control characters{{.*}}.
-# CHECK: --
-
-# CHECK: PASS: shtest-format :: external_shell/pass.txt
-
-# CHECK: FAIL: shtest-format :: fail.txt
-# CHECK-NEXT: *** TEST 'shtest-format :: fail.txt' FAILED ***
-# CHECK-NEXT: Exit Code: 1
-# CHECK-EMPTY:
-# CHECK-NEXT: Command Output (stdout):
-# CHECK-NEXT: --
-# CHECK-NEXT: # RUN: at line 1
-# CHECK-NEXT: printf "line 1: failed test output on stdout\nline 2: failed test output on stdout"
-# CHECK-NEXT: executed command: printf 'line 1: failed test output on stdout\nline 2: failed test output on stdout'
-# CHECK-NEXT: # .---command stdout------------
-# CHECK-NEXT: # | line 1: failed test output on stdout
-# CHECK-NEXT: # | line 2: failed test output on stdout
-# CHECK-NEXT: # `-----------------------------
-# CHECK-NEXT: # RUN: at line 2
-# CHECK-NEXT: false
-# CHECK-NEXT: # executed command: false
-# CHECK-NEXT: # note: command had no output on stdout or stderr
-# CHECK-NEXT: # error: command failed with exit status: 1
-# CHECK-EMPTY:
-# CHECK-NEXT: --
-
-
-# CHECK: UNRESOLVED: shtest-format :: no-test-line.txt
-# CHECK: PASS: shtest-format :: pass.txt
-# CHECK: UNSUPPORTED: shtest-format :: requires-missing.txt
-# CHECK: PASS: shtest-format :: requires-present.txt
-# CHECK: UNRESOLVED: shtest-format :: requires-star.txt
-# CHECK: PASS: shtest-format :: requires-triple.txt
-# CHECK: PASS: shtest-format :: unsupported-expr-false.txt
-# CHECK: UNSUPPORTED: shtest-format :: unsupported-expr-true.txt
-# CHECK: UNRESOLVED: shtest-format :: unsupported-star.txt
-# CHECK: UNSUPPORTED: shtest-format :: unsupported_dir/some-test.txt
-# CHECK: PASS: shtest-format :: xfail-expr-false.txt
-# CHECK: XFAIL: shtest-format :: xfail-expr-true.txt
-# CHECK: XFAIL: shtest-format :: xfail-feature.txt
-# CHECK: XFAIL: shtest-format :: xfail-target.txt
-# CHECK: XFAIL: shtest-format :: xfail.txt
-
-# CHECK: XPASS: shtest-format :: xpass.txt
-# CHECK-NEXT: *** TEST 'shtest-format :: xpass.txt' FAILED ***
-# CHECK-NEXT: Exit Code: 0
-# CHECK-EMPTY:
-# CHECK-NEXT: Command Output (stdout):
-# CHECK-NEXT: --
-# CHECK-NEXT: # RUN: at line 1
-# CHECK-NEXT: true
-# CHECK-NEXT: # executed command: true
-# CHECK-EMPTY:
-# CHECK-NEXT: --
-
-# CHECK: Failed Tests (4)
-# CHECK: shtest-format :: external_shell/fail.txt
-# CHECK: shtest-format :: external_shell/fail_with_bad_encoding.txt
-# CHECK: shtest-format :: external_shell/fail_with_control_chars.txt
-# CHECK: shtest-format :: fail.txt
-
-# CHECK: Unexpectedly Passed Tests (1)
-# CHECK: shtest-format :: xpass.txt
-
-# CHECK: Testing Time:
-# CHECK: Unsupported : 3
-# CHECK: Passed : 7
-# CHECK: Expectedly Failed : 4
-# CHECK: Unresolved : 3
-# CHECK: Failed : 4
-# CHECK: Unexpectedly Passed: 1
-
-
-# XUNIT: <?xml version="1.0" encoding="UTF-8"?>
-# XUNIT-NEXT: <testsuites time="{{[0-9.]+}}">
-# XUNIT-NEXT: <testsuite name="shtest-format" tests="22" failures="8" skipped="3" time="{{[0-9.]+}}">
-
-# XUNIT: <testcase classname="shtest-format.external_shell" name="fail.txt" time="{{[0-9]+\.[0-9]+}}">
-# XUNIT-NEXT: <failure{{[ ]*}}>
-# XUNIT: </failure>
-# XUNIT-NEXT: </testcase>
-
-
-# XUNIT: <testcase classname="shtest-format.external_shell" name="fail_with_bad_encoding.txt" time="{{[0-9]+\.[0-9]+}}">
-# XUNIT-NEXT: <failure{{[ ]*}}>
-# XUNIT: </failure>
-# XUNIT-NEXT: </testcase>
-
-# XUNIT: <testcase classname="shtest-format.external_shell" name="fail_with_control_chars.txt" time="{{[0-9]+\.[0-9]+}}">
-# XUNIT-NEXT: <failure><![CDATA[Exit Code: 1
-# XUNIT-EMPTY:
-# XUNIT-NEXT: Command Output (stdout):
-# XUNIT-NEXT: --
-# XUNIT-NEXT: a line with [2;30;41mcontrol characters[0m.
-# XUNIT-EMPTY:
-# XUNIT-NEXT: --
-# XUNIT: ]]></failure>
-# XUNIT-NEXT: </testcase>
-
-# XUNIT: <testcase classname="shtest-format.external_shell" name="pass.txt" time="{{[0-9]+\.[0-9]+}}"/>
-
-# XUNIT: <testcase classname="shtest-format.shtest-format" name="fail.txt" time="{{[0-9]+\.[0-9]+}}">
-# XUNIT-NEXT: <failure{{[ ]*}}>
-# XUNIT: </failure>
-# XUNIT-NEXT: </testcase>
-
-# XUNIT: <testcase classname="shtest-format.shtest-format" name="no-test-line.txt" time="{{[0-9]+\.[0-9]+}}">
-# XUNIT-NEXT: <failure{{[ ]*}}>
-# XUNIT: </failure>
-# XUNIT-NEXT: </testcase>
-
-# XUNIT: <testcase classname="shtest-format.shtest-format" name="pass.txt" time="{{[0-9]+\.[0-9]+}}"/>
-
-# XUNIT: <testcase classname="shtest-format.shtest-format" name="requires-missing.txt" time="{{[0-9]+\.[0-9]+}}">
-# XUNIT-NEXT:<skipped message="Missing required feature(s): a-missing-feature"/>
-
-# XUNIT: <testcase classname="shtest-format.shtest-format" name="requires-present.txt" time="{{[0-9]+\.[0-9]+}}"/>
-
-# XUNIT: <testcase classname="shtest-format.shtest-format" name="requires-star.txt" time="{{[0-9]+\.[0-9]+}}">
-# XUNIT-NEXT: <failure{{[ ]*}}>
-# XUNIT: </failure>
-# XUNIT-NEXT: </testcase>
-
-# XUNIT: <testcase classname="shtest-format.shtest-format" name="requires-triple.txt" time="{{[0-9]+\.[0-9]+}}"/>
-
-# XUNIT: <testcase classname="shtest-format.shtest-format" name="unsupported-expr-false.txt" time="{{[0-9]+\.[0-9]+}}"/>
-
-# XUNIT: <testcase classname="shtest-format.shtest-format" name="unsupported-expr-true.txt" time="{{[0-9]+\.[0-9]+}}">
-# XUNIT-NEXT:<skipped message="Unsupported configuration"/>
-
-# XUNIT: <testcase classname="shtest-format.shtest-format" name="unsupported-star.txt" time="{{[0-9]+\.[0-9]+}}">
-# XUNIT-NEXT: <failure{{[ ]*}}>
-# XUNIT: </failure>
-# XUNIT-NEXT: </testcase>
-
-# XUNIT: <testcase classname="shtest-format.unsupported_dir" name="some-test.txt" time="{{[0-9]+\.[0-9]+}}">
-# XUNIT-NEXT:<skipped message="Unsupported configuration"/>
-
-# XUNIT: <testcase classname="shtest-format.shtest-format" name="xfail-expr-false.txt" time="{{[0-9]+\.[0-9]+}}"/>
-
-# XUNIT: <testcase classname="shtest-format.shtest-format" name="xfail-expr-true.txt" time="{{[0-9]+\.[0-9]+}}"/>
-
-# XUNIT: <testcase classname="shtest-format.shtest-format" name="xfail-feature.txt" time="{{[0-9]+\.[0-9]+}}"/>
-
-# XUNIT: <testcase classname="shtest-format.shtest-format" name="xfail-target.txt" time="{{[0-9]+\.[0-9]+}}"/>
-
-# XUNIT: <testcase classname="shtest-format.shtest-format" name="xfail.txt" time="{{[0-9]+\.[0-9]+}}"/>
-
-# XUNIT: <testcase classname="shtest-format.shtest-format" name="xpass.txt" time="{{[0-9]+\.[0-9]+}}">
-# XUNIT-NEXT: <failure{{[ ]*}}>
-# XUNIT: </failure>
-# XUNIT-NEXT: </testcase>
-
-# XUNIT: </testsuite>
-# XUNIT-NEXT: </testsuites>
diff --git a/llvm/utils/lit/tests/shtest-glob.py b/llvm/utils/lit/tests/shtest-glob.py
deleted file mode 100644
index ba609e036c166..0000000000000
--- a/llvm/utils/lit/tests/shtest-glob.py
+++ /dev/null
@@ -1,13 +0,0 @@
-## Tests glob pattern handling in echo command.
-
-# RUN: not %{lit} -v %{inputs}/shtest-glob \
-# RUN: | FileCheck -dump-input=fail -match-full-lines --implicit-check-not=Error: %s
-# END.
-
-# CHECK: UNRESOLVED: shtest-glob :: glob-echo.txt ({{[^)]*}})
-# CHECK: TypeError: string argument expected, got 'GlobItem'
-
-# CHECK: FAIL: shtest-glob :: glob-mkdir.txt ({{[^)]*}})
-# CHECK: # | Error: 'mkdir' command failed, {{.*}}example_file1.input'
-# CHECK-NEXT: # | Error: 'mkdir' command failed, {{.*}}example_file2.input'
-# CHECK: # error: command failed with exit status: 1
diff --git a/llvm/utils/lit/tests/shtest-if-else.py b/llvm/utils/lit/tests/shtest-if-else.py
deleted file mode 100644
index c18da4abbcca5..0000000000000
--- a/llvm/utils/lit/tests/shtest-if-else.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# RUN: %{lit} -v --show-all %{inputs}/shtest-if-else/test.txt \
-# RUN: | FileCheck %{inputs}/shtest-if-else/test.txt --match-full-lines \
-# RUN: --implicit-check-not='RUN:'
-
-# RUN: not %{lit} -v --show-all %{inputs}/shtest-if-else/test-neg1.txt 2>&1 \
-# RUN: | FileCheck %{inputs}/shtest-if-else/test-neg1.txt
-
-# RUN: not %{lit} -v --show-all %{inputs}/shtest-if-else/test-neg2.txt 2>&1 \
-# RUN: | FileCheck %{inputs}/shtest-if-else/test-neg2.txt
-
-# RUN: not %{lit} -v --show-all %{inputs}/shtest-if-else/test-neg3.txt 2>&1 \
-# RUN: | FileCheck %{inputs}/shtest-if-else/test-neg3.txt
-
-# RUN: not %{lit} -v --show-all %{inputs}/shtest-if-else/test-neg4.txt 2>&1 \
-# RUN: | FileCheck %{inputs}/shtest-if-else/test-neg4.txt
diff --git a/llvm/utils/lit/tests/shtest-inject.py b/llvm/utils/lit/tests/shtest-inject.py
deleted file mode 100644
index 5ba9d2f81268f..0000000000000
--- a/llvm/utils/lit/tests/shtest-inject.py
+++ /dev/null
@@ -1,44 +0,0 @@
-# Check that we can inject preamble commands at the beginning of a ShTest.
-#
-# For one case, check the execution trace as these preamble commands have
-# "preamble command" instead of the usual "{{RUN}}: at line N".
-
-# RUN: %{lit} %{inputs}/shtest-inject/test-empty.txt --show-all | FileCheck --check-prefix=CHECK-TEST1 %s
-#
-# CHECK-TEST1: Command Output (stdout):
-# CHECK-TEST1-NEXT: --
-# CHECK-TEST1-NEXT: # preamble command line
-# CHECK-TEST1-NEXT: echo "THIS WAS"
-# CHECK-TEST1-NEXT: # executed command: echo 'THIS WAS'
-# CHECK-TEST1-NEXT: # .---command stdout{{-*}}
-# CHECK-TEST1-NEXT: # | THIS WAS
-# CHECK-TEST1-NEXT: # `---{{-*}}
-# CHECK-TEST1-NEXT: # preamble command line
-# CHECK-TEST1-NEXT: echo
-# CHECK-TEST1-NEXT: "INJECTED"
-# CHECK-TEST1-NEXT: # executed command: echo INJECTED
-# CHECK-TEST1-NEXT: # .---command stdout{{-*}}
-# CHECK-TEST1-NEXT: # | INJECTED
-# CHECK-TEST1-NEXT: # `---{{-*}}
-# CHECK-TEST1-EMPTY:
-# CHECK-TEST1-NEXT: --
-#
-# CHECK-TEST1: Passed: 1
-
-# RUN: %{lit} %{inputs}/shtest-inject/test-one.txt --show-all | FileCheck --check-prefix=CHECK-TEST2 %s
-#
-# CHECK-TEST2: THIS WAS
-# CHECK-TEST2: INJECTED
-# CHECK-TEST2: IN THE FILE
-#
-# CHECK-TEST2: Passed: 1
-
-# RUN: %{lit} %{inputs}/shtest-inject/test-many.txt --show-all | FileCheck --check-prefix=CHECK-TEST3 %s
-#
-# CHECK-TEST3: THIS WAS
-# CHECK-TEST3: INJECTED
-# CHECK-TEST3: IN THE FILE
-# CHECK-TEST3: IF IT WORKS
-# CHECK-TEST3: AS EXPECTED
-#
-# CHECK-TEST3: Passed: 1
diff --git a/llvm/utils/lit/tests/shtest-keyword-parse-errors.py b/llvm/utils/lit/tests/shtest-keyword-parse-errors.py
deleted file mode 100644
index 2b42d748b54db..0000000000000
--- a/llvm/utils/lit/tests/shtest-keyword-parse-errors.py
+++ /dev/null
@@ -1,15 +0,0 @@
-# RUN: not %{lit} -vv %{inputs}/shtest-keyword-parse-errors > %t.out
-# RUN: FileCheck -input-file %t.out %s
-#
-# END.
-
-# CHECK: Testing: 3 tests
-
-# CHECK-LABEL: UNRESOLVED: shtest-keyword-parse-errors :: empty.txt
-# CHECK: {{^}}Test has no 'RUN:' line{{$}}
-
-# CHECK-LABEL: UNRESOLVED: shtest-keyword-parse-errors :: multiple-allow-retries.txt
-# CHECK: {{^}}Test has more than one ALLOW_RETRIES lines{{$}}
-
-# CHECK-LABEL: UNRESOLVED: shtest-keyword-parse-errors :: unterminated-run.txt
-# CHECK: {{^}}Test has unterminated 'RUN:' directive (with '\') at line 1{{$}}
diff --git a/llvm/utils/lit/tests/shtest-not-posix.py b/llvm/utils/lit/tests/shtest-not-posix.py
deleted file mode 100644
index 6468d5ea48450..0000000000000
--- a/llvm/utils/lit/tests/shtest-not-posix.py
+++ /dev/null
@@ -1,13 +0,0 @@
-# Check the not command correctly handles POSIX signals
-
-# UNSUPPORTED: system-windows
-
-# RUN: not %{lit} -a %{inputs}/shtest-not-posix \
-# RUN: | FileCheck -match-full-lines %s
-
-# CHECK: -- Testing: 2 tests{{.*}}
-
-# CHECK PASS: shtest-not-posix :: not-signal-crash.txt (1 of 2)
-
-# CHECK: FAIL: shtest-not-posix :: not-signal.txt (2 of 2)
-# CHECK: # error: command failed with exit status: 1
diff --git a/llvm/utils/lit/tests/shtest-not.py b/llvm/utils/lit/tests/shtest-not.py
deleted file mode 100644
index e735d38260b37..0000000000000
--- a/llvm/utils/lit/tests/shtest-not.py
+++ /dev/null
@@ -1,190 +0,0 @@
-# Check the not command
-
-# RUN: not %{lit} -a %{inputs}/shtest-not \
-# RUN: | FileCheck -match-full-lines %s
-#
-# END.
-
-# Make sure not and env commands are included in printed commands.
-
-# CHECK: -- Testing: 17 tests{{.*}}
-
-# CHECK: FAIL: shtest-not :: exclamation-args-nested-none.txt {{.*}}
-# CHECK: ! ! !
-# CHECK: # executed command: ! ! !
-# CHECK: # | Error: '!' requires a subcommand
-# CHECK: # error: command failed with exit status: {{.*}}
-
-# CHECK: FAIL: shtest-not :: exclamation-args-none.txt {{.*}}
-# CHECK: !
-# CHECK: # executed command: !
-# CHECK: # | Error: '!' requires a subcommand
-# CHECK: # error: command failed with exit status: {{.*}}
-
-# CHECK: FAIL: shtest-not :: exclamation-calls-external.txt {{.*}}
-
-# CHECK: ! [[PYTHON:.*]] fail.py
-# CHECK: # executed command: ! [[PYTHON_BARE:.*]] fail.py
-# CHECK: ! ! [[PYTHON]] pass.py
-# CHECK: # executed command: ! ! [[PYTHON_BARE]] pass.py
-# CHECK: ! ! ! [[PYTHON]] fail.py
-# CHECK: # executed command: ! ! ! [[PYTHON_BARE]] fail.py
-# CHECK: ! ! ! ! [[PYTHON]] pass.py
-# CHECK: # executed command: ! ! ! ! [[PYTHON_BARE]] pass.py
-
-# CHECK: ! [[PYTHON]] pass.py
-# CHECK: # executed command: ! [[PYTHON_BARE]] pass.py
-# CHECK: # error: command failed with exit status: {{.*}}
-
-# CHECK: FAIL: shtest-not :: not-args-last-is-crash.txt {{.*}}
-# CHECK: not --crash
-# CHECK: # executed command: not --crash
-# CHECK: # | Error: 'not' requires a subcommand
-# CHECK: # error: command failed with exit status: {{.*}}
-
-# CHECK: FAIL: shtest-not :: not-args-nested-none.txt {{.*}}
-# CHECK: not not not
-# CHECK: # executed command: not not not
-# CHECK: # | Error: 'not' requires a subcommand
-# CHECK: # error: command failed with exit status: {{.*}}
-
-# CHECK: FAIL: shtest-not :: not-args-none.txt {{.*}}
-# CHECK: not
-# CHECK: # executed command: not
-# CHECK: # | Error: 'not' requires a subcommand
-# CHECK: # error: command failed with exit status: {{.*}}
-
-# CHECK: FAIL: shtest-not :: not-calls-cd.txt {{.*}}
-# CHECK: not not cd foobar
-# CHECK: # executed command: not not cd foobar
-# CHECK: not --crash cd foobar
-# CHECK: # executed command: not --crash cd foobar
-# CHECK: # | Error: 'not --crash' cannot call 'cd'
-# CHECK: # error: command failed with exit status: {{.*}}
-
-# CHECK: FAIL: shtest-not :: not-calls-colon.txt {{.*}}
-# CHECK: not not : foobar
-# CHECK: # executed command: not not : foobar
-# CHECK: not --crash :
-# CHECK: # executed command: not --crash :
-# CHECK: # | Error: 'not --crash' cannot call ':'
-# CHECK: # error: command failed with exit status: {{.*}}
-
-# CHECK: FAIL: shtest-not :: not-calls-diff-with-crash.txt {{.*}}
-# CHECK: not --crash diff -u {{.*}}
-# CHECK: # executed command: not --crash diff -u {{.*}}
-# CHECK-NOT: # executed command: {{.*}}
-# CHECK-NOT: {{[Ee]rror}}
-# CHECK: # error: command failed with exit status: {{.*}}
-# CHECK-NOT: # executed command: {{.*}}
-# CHECK-NOT: {{[Ee]rror}}
-
-# CHECK: FAIL: shtest-not :: not-calls-diff.txt {{.*}}
-# CHECK: not diff {{.*}}
-# CHECK: # executed command: not diff {{.*}}
-# CHECK: not not not diff {{.*}}
-# CHECK: # executed command: not not not diff {{.*}}
-# CHECK: not not not not not diff {{.*}}
-# CHECK: # executed command: not not not not not diff {{.*}}
-# CHECK: diff {{.*}}
-# CHECK: # executed command: diff {{.*}}
-# CHECK: not not diff {{.*}}
-# CHECK: # executed command: not not diff {{.*}}
-# CHECK: not not not not diff {{.*}}
-# CHECK: # executed command: not not not not diff {{.*}}
-# CHECK: not diff {{.*}}
-# CHECK: # executed command: not diff {{.*}}
-# CHECK-NOT: # executed command: {{.*}}
-
-# CHECK: FAIL: shtest-not :: not-calls-echo.txt {{.*}}
-# CHECK: not not echo hello world
-# CHECK: # executed command: not not echo hello world
-# CHECK: not --crash echo hello world
-# CHECK: # executed command: not --crash echo hello world
-# CHECK: # | Error: 'not --crash' cannot call 'echo'
-# CHECK: # error: command failed with exit status: {{.*}}
-
-# CHECK: FAIL: shtest-not :: not-calls-env-builtin.txt {{.*}}
-# CHECK: not --crash env -u FOO BAR=3 rm {{.*}}.no-such-file
-# CHECK: # executed command: not --crash env -u FOO BAR=3 rm {{.+}}.no-such-file{{.*}}
-# CHECK: # | Error: 'env' cannot call 'rm'
-# CHECK: # error: command failed with exit status: {{.*}}
-
-# CHECK: FAIL: shtest-not :: not-calls-export.txt {{.*}}
-# CHECK: not not export FOO=1
-# CHECK: # executed command: not not export FOO=1
-# CHECK: not --crash export BAZ=3
-# CHECK: # executed command: not --crash export BAZ=3
-# CHECK: # | Error: 'not --crash' cannot call 'export'
-# CHECK: # error: command failed with exit status: {{.*}}
-
-
-# CHECK: PASS: shtest-not :: not-calls-external.txt {{.*}}
-
-# CHECK: not [[PYTHON]] fail.py
-# CHECK: # executed command: not [[PYTHON_BARE]] fail.py
-# CHECK: not not [[PYTHON]] pass.py
-# CHECK: # executed command: not not [[PYTHON_BARE]] pass.py
-# CHECK: not not not [[PYTHON]] fail.py
-# CHECK: # executed command: not not not [[PYTHON_BARE]] fail.py
-# CHECK: not not not not [[PYTHON]] pass.py
-# CHECK: # executed command: not not not not [[PYTHON_BARE]] pass.py
-
-# CHECK: not not --crash [[PYTHON]] pass.py
-# CHECK: # executed command: not not --crash [[PYTHON_BARE]] pass.py
-# CHECK: not not --crash [[PYTHON]] fail.py
-# CHECK: # executed command: not not --crash [[PYTHON_BARE]] fail.py
-# CHECK: not not --crash not [[PYTHON]] pass.py
-# CHECK: # executed command: not not --crash not [[PYTHON_BARE]] pass.py
-# CHECK: not not --crash not [[PYTHON]] fail.py
-# CHECK: # executed command: not not --crash not [[PYTHON_BARE]] fail.py
-
-# CHECK: env not [[PYTHON]] fail.py | {{.*}}
-# CHECK: # executed command: env not [[PYTHON_BARE]] fail.py
-# CHECK: not env [[PYTHON]] fail.py | {{.*}}
-# CHECK: # executed command: not env [[PYTHON_BARE]] fail.py
-# CHECK: env FOO=1 not [[PYTHON]] fail.py | {{.*}}
-# CHECK: # executed command: env FOO=1 not [[PYTHON_BARE]] fail.py
-# CHECK: not env FOO=1 BAR=1 [[PYTHON]] fail.py | {{.*}}
-# CHECK: # executed command: not env FOO=1 BAR=1 [[PYTHON_BARE]] fail.py
-# CHECK: env FOO=1 BAR=1 not env -u FOO BAR=2 [[PYTHON]] fail.py | {{.*}}
-# CHECK: # executed command: env FOO=1 BAR=1 not env -u FOO BAR=2 [[PYTHON_BARE]] fail.py
-# CHECK: not env FOO=1 BAR=1 not env -u FOO -u BAR [[PYTHON]] pass.py | {{.*}}
-# CHECK: # executed command: not env FOO=1 BAR=1 not env -u FOO -u BAR [[PYTHON_BARE]] pass.py
-# CHECK: not not env FOO=1 env FOO=2 BAR=1 [[PYTHON]] pass.py | {{.*}}
-# CHECK: # executed command: not not env FOO=1 env FOO=2 BAR=1 [[PYTHON_BARE]] pass.py
-# CHECK: env FOO=1 -u BAR env -u FOO BAR=1 not not [[PYTHON]] pass.py | {{.*}}
-# CHECK: # executed command: env FOO=1 -u BAR env -u FOO BAR=1 not not [[PYTHON_BARE]] pass.py
-
-# CHECK: not env FOO=1 BAR=1 env FOO=2 BAR=2 not --crash [[PYTHON]] pass.py | {{.*}}
-# CHECK: # executed command: not env FOO=1 BAR=1 env FOO=2 BAR=2 not --crash [[PYTHON_BARE]] pass.py
-# CHECK: not env FOO=1 BAR=1 not --crash not [[PYTHON]] pass.py | {{.*}}
-# CHECK: # executed command: not env FOO=1 BAR=1 not --crash not [[PYTHON_BARE]] pass.py
-# CHECK: not not --crash env -u BAR not env -u FOO BAR=1 [[PYTHON]] pass.py | {{.*}}
-# CHECK: # executed command: not not --crash env -u BAR not env -u FOO BAR=1 [[PYTHON_BARE]] pass.py
-
-
-# CHECK: FAIL: shtest-not :: not-calls-fail2.txt {{.*}}
-# CHECK-NEXT: {{.*}} TEST 'shtest-not :: not-calls-fail2.txt' FAILED {{.*}}
-# CHECK-NEXT: Exit Code: 1
-
-# CHECK: FAIL: shtest-not :: not-calls-mkdir.txt {{.*}}
-# CHECK: not mkdir {{.*}}
-# CHECK: # executed command: not mkdir {{.*}}
-# CHECK: not --crash mkdir foobar
-# CHECK: # executed command: not --crash mkdir foobar
-# CHECK: # | Error: 'not --crash' cannot call 'mkdir'
-# CHECK: # error: command failed with exit status: {{.*}}
-
-# CHECK: FAIL: shtest-not :: not-calls-rm.txt {{.*}}
-# CHECK: not rm {{.*}}
-# CHECK: # executed command: not rm {{.*}}
-# CHECK: not --crash rm foobar
-# CHECK: # executed command: not --crash rm foobar
-# CHECK: # | Error: 'not --crash' cannot call 'rm'
-# CHECK: # error: command failed with exit status: {{.*}}
-
-# CHECK: Total Discovered Tests: 17
-# CHECK: Passed: 1 {{\([0-9]*\.[0-9]*%\)}}
-# CHECK: Failed: 16 {{\([0-9]*\.[0-9]*%\)}}
-# CHECK-NOT: {{.}}
diff --git a/llvm/utils/lit/tests/shtest-output-printing.py b/llvm/utils/lit/tests/shtest-output-printing.py
deleted file mode 100644
index b9045c3fe520b..0000000000000
--- a/llvm/utils/lit/tests/shtest-output-printing.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# Check the various features of the ShTest format.
-#
-# RUN: not %{lit} -v %{inputs}/shtest-output-printing > %t.out
-# RUN: FileCheck --input-file %t.out --match-full-lines %s
-#
-# END.
-
-# CHECK: -- Testing: {{.*}}
-# CHECK: FAIL: shtest-output-printing :: basic.txt {{.*}}
-# CHECK-NEXT: ***{{\**}} TEST 'shtest-output-printing :: basic.txt' FAILED ***{{\**}}
-# CHECK-NEXT: Exit Code: 1
-# CHECK-EMPTY:
-# CHECK-NEXT: Command Output (stdout):
-# CHECK-NEXT: --
-# CHECK-NEXT: # RUN: at line 1
-# CHECK-NEXT: true
-# CHECK-NEXT: # executed command: true
-# CHECK-NEXT: # RUN: at line 2
-# CHECK-NEXT: echo hi
-# CHECK-NEXT: # executed command: echo hi
-# CHECK-NEXT: # .---command stdout------------
-# CHECK-NEXT: # | hi
-# CHECK-NEXT: # `-----------------------------
-# CHECK-NEXT: # RUN: at line 3
-# CHECK-NEXT: not not wc missing-file &> [[FILE:.*]] || true
-# CHECK-NEXT: # executed command: not not wc missing-file
-# CHECK-NEXT: # .---redirected output from '[[FILE]]'
-# CHECK-NEXT: # | {{.*}}wc: {{cannot open missing-file|missing-file.* No such file or directory}}
-# CHECK-NEXT: # `-----------------------------
-# CHECK-NEXT: # note: command had no output on stdout or stderr
-# CHECK-NEXT: # error: command failed with exit status: 1
-# CHECK-NEXT: # executed command: true
-# CHECK-NEXT: # RUN: at line 4
-# CHECK-NEXT: not {{.*}}python{{.*}} {{.*}}write-a-lot.py &> [[FILE:.*]]
-# CHECK-NEXT: # executed command: not {{.*}}python{{.*}} {{.*}}write-a-lot.py{{.*}}
-# CHECK-NEXT: # .---redirected output from '[[FILE]]'
-# CHECK-NEXT: # | All work and no play makes Jack a dull boy.
-# CHECK-NEXT: # | All work and no play makes Jack a dull boy.
-# CHECK-NEXT: # | All work and no play makes Jack a dull boy.
-# CHECK: # | ...
-# CHECK-NEXT: # `---data was truncated--------
-# CHECK-NEXT: # note: command had no output on stdout or stderr
-# CHECK-NEXT: # error: command failed with exit status: 1
-# CHECK-EMPTY:
-# CHECK-NEXT:--
diff --git a/llvm/utils/lit/tests/shtest-pushd-popd.py b/llvm/utils/lit/tests/shtest-pushd-popd.py
deleted file mode 100644
index 799e9d6d65951..0000000000000
--- a/llvm/utils/lit/tests/shtest-pushd-popd.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# Check the pushd and popd commands
-
-# RUN: not %{lit} -v %{inputs}/shtest-pushd-popd \
-# RUN: | FileCheck -match-full-lines %s
-#
-# END.
-
-# CHECK: -- Testing: 4 tests{{.*}}
-
-# CHECK: FAIL: shtest-pushd-popd :: popd-args.txt ({{[^)]*}})
-# CHECK: popd invalid
-# CHECK: # | 'popd' does not support arguments
-
-# CHECK: FAIL: shtest-pushd-popd :: popd-no-stack.txt ({{[^)]*}})
-# CHECK: popd
-# CHECK: # | popd: directory stack empty
-
-# CHECK: FAIL: shtest-pushd-popd :: pushd-too-many-args.txt ({{[^)]*}})
-# CHECK: pushd a b
-# CHECK: # | 'pushd' supports only one argument
-
-# CHECK: Total Discovered Tests: 4
-# CHECK: Passed: 1 {{\([0-9]*\.[0-9]*%\)}}
-# CHECK: Failed: 3 {{\([0-9]*\.[0-9]*%\)}}
-# CHECK-NOT: {{.}}
diff --git a/llvm/utils/lit/tests/shtest-readfile-external.py b/llvm/utils/lit/tests/shtest-readfile-external.py
deleted file mode 100644
index 0d8e3ad1242bf..0000000000000
--- a/llvm/utils/lit/tests/shtest-readfile-external.py
+++ /dev/null
@@ -1,25 +0,0 @@
-## Tests the readfile substitution.
-
-# TODO(boomanaiden154): This sometimes fails, possibly due to buffers not being flushed.
-# ALLOW_RETRIES: 2
-
-# UNSUPPORTED: system-windows
-# RUN: env LIT_USE_INTERNAL_SHELL=0 not %{lit} -v %{inputs}/shtest-readfile | FileCheck -match-full-lines -DTEMP_PATH=%S/Inputs/shtest-readfile/Output %s
-
-# CHECK: -- Testing: 5 tests{{.*}}
-
-# CHECK-LABEL: FAIL: shtest-readfile :: absolute-paths.txt ({{[^)]*}})
-# CHECK: echo $(cat [[TEMP_PATH]]/absolute-paths.txt.tmp) && test -e [[TEMP_PATH]]/absolute-paths.txt.tmp {{.*}}
-# CHECK: + echo hello
-
-# CHECK-LABEL: FAIL: shtest-readfile :: file-does-not-exist.txt ({{[^)]*}})
-# CHECK: echo $(cat /file/does/not/exist) && test -e /file/does/not/exist {{.*}}
-# CHECK: {{.*}}cat{{.*}}/file/does/not/exist{{.*}}
-
-# CHECK-LABEL: FAIL: shtest-readfile :: relative-paths.txt ({{[^)]*}})
-# CHECK: echo $(cat rel_path_test_folder/test_file) && test -e rel_path_test_folder/test_file {{.*}}
-# CHECK: + echo hello
-
-# CHECK-LABEL: FAIL: shtest-readfile :: two-same-line.txt ({{[^)]*}})
-# CHECK: echo $(cat [[TEMP_PATH]]/two-same-line.txt.tmp.1) $(cat [[TEMP_PATH]]/two-same-line.txt.tmp.2) && test -e [[TEMP_PATH]]/two-same-line.txt.tmp.1 && test -e [[TEMP_PATH]]/two-same-line.txt.tmp.2 {{.*}}
-# CHECK: + echo hello bye
diff --git a/llvm/utils/lit/tests/shtest-readfile.py b/llvm/utils/lit/tests/shtest-readfile.py
deleted file mode 100644
index ca57db82e6617..0000000000000
--- a/llvm/utils/lit/tests/shtest-readfile.py
+++ /dev/null
@@ -1,28 +0,0 @@
-## Tests the readfile substitution.
-
-# TODO(boomanaiden154): This sometimes fails, possibly due to buffers not being flushed.
-# ALLOW_RETRIES: 2
-
-# RUN: env LIT_USE_INTERNAL_SHELL=1 not %{lit} -v %{inputs}/shtest-readfile | FileCheck -match-full-lines -DTEMP_PATH=%S%{fs-sep}Inputs%{fs-sep}shtest-readfile%{fs-sep}Output %s
-
-# CHECK: -- Testing: 5 tests{{.*}}
-
-# CHECK-LABEL: FAIL: shtest-readfile :: absolute-paths.txt ({{[^)]*}})
-# CHECK: echo hello
-# CHECK: # executed command: echo '%{readfile:[[TEMP_PATH]]{{[\\\/]}}absolute-paths.txt.tmp}'
-
-# CHECK-LABEL: FAIL: shtest-readfile :: env.txt ({{[^)]*}})
-# CHECK: env TEST=hello {{.*}} -c "import os; print(os.environ['TEST'])"
-# CHECK: # | hello
-
-# CHECK-LABEL: FAIL: shtest-readfile :: file-does-not-exist.txt ({{[^)]*}})
-# CHECK: # executed command: @echo 'echo %{readfile:/file/does/not/exist}'
-# CHECK: # | File specified in readfile substitution does not exist: {{.*}}/file/does/not/exist
-
-# CHECK-LABEL: FAIL: shtest-readfile :: relative-paths.txt ({{[^)]*}})
-# CHECK: echo hello
-# CHECK: # executed command: echo '%{readfile:rel_path_test_folder/test_file}'
-
-# CHECK-LABEL: FAIL: shtest-readfile :: two-same-line.txt ({{[^)]*}})
-# CHECK: echo hello bye
-# CHECK: # executed command: echo '%{readfile:[[TEMP_PATH]]{{[\\\/]}}two-same-line.txt.tmp.1}' '%{readfile:[[TEMP_PATH]]{{[\\\/]}}two-same-line.txt.tmp.2}'
diff --git a/llvm/utils/lit/tests/shtest-recursive-substitution.py b/llvm/utils/lit/tests/shtest-recursive-substitution.py
deleted file mode 100644
index 65c177e65a3c7..0000000000000
--- a/llvm/utils/lit/tests/shtest-recursive-substitution.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# Check that the config.recursiveExpansionLimit is picked up and will cause
-# lit substitutions to be expanded recursively.
-
-# RUN: %{lit} %{inputs}/shtest-recursive-substitution/substitutes-within-limit --show-all | FileCheck --check-prefix=CHECK-TEST1 %s
-# CHECK-TEST1: PASS: substitutes-within-limit :: test.py
-# CHECK-TEST1: echo STOP
-
-# RUN: not %{lit} %{inputs}/shtest-recursive-substitution/does-not-substitute-within-limit --show-all | FileCheck --check-prefix=CHECK-TEST2 %s
-# CHECK-TEST2: UNRESOLVED: does-not-substitute-within-limit :: test.py
-# CHECK-TEST2: ValueError: Recursive substitution of
-
-# RUN: %{lit} %{inputs}/shtest-recursive-substitution/does-not-substitute-no-limit --show-all | FileCheck --check-prefix=CHECK-TEST3 %s
-# CHECK-TEST3: PASS: does-not-substitute-no-limit :: test.py
-# CHECK-TEST3: echo %rec4
-
-# RUN: not %{lit} %{inputs}/shtest-recursive-substitution/not-an-integer --show-all 2>&1 | FileCheck --check-prefix=CHECK-TEST4 %s
-# CHECK-TEST4: recursiveExpansionLimit must be either None or an integer
-
-# RUN: not %{lit} %{inputs}/shtest-recursive-substitution/negative-integer --show-all 2>&1 | FileCheck --check-prefix=CHECK-TEST5 %s
-# CHECK-TEST5: recursiveExpansionLimit must be a non-negative integer
-
-# RUN: %{lit} %{inputs}/shtest-recursive-substitution/set-to-none --show-all | FileCheck --check-prefix=CHECK-TEST6 %s
-# CHECK-TEST6: PASS: set-to-none :: test.py
-
-# RUN: %{lit} %{inputs}/shtest-recursive-substitution/escaping --show-all | FileCheck --check-prefix=CHECK-TEST7 %s
-# CHECK-TEST7: PASS: escaping :: test.py
-# CHECK-TEST7: echo %s %s %%s
diff --git a/llvm/utils/lit/tests/shtest-run-at-line.py b/llvm/utils/lit/tests/shtest-run-at-line.py
deleted file mode 100644
index 4989074170ecf..0000000000000
--- a/llvm/utils/lit/tests/shtest-run-at-line.py
+++ /dev/null
@@ -1,111 +0,0 @@
-# Check that -a/-v/-vv makes the line number of the failing RUN command clear.
-
-
-# RUN: not %{lit} -a %{inputs}/shtest-run-at-line | %{filter-lit} | FileCheck %s
-# RUN: not %{lit} -v %{inputs}/shtest-run-at-line | %{filter-lit} | FileCheck %s
-# RUN: not %{lit} -vv %{inputs}/shtest-run-at-line | %{filter-lit} | FileCheck %s
-# END.
-
-
-# CHECK: Testing: 8 tests
-
-
-# In the case of the external shell, we check for only RUN lines in stderr in
-# case some shell implementations format "set -x" output differently.
-
-# CHECK-LABEL: FAIL: shtest-run-at-line :: external-shell/basic.txt
-
-# CHECK: Command Output (stderr)
-# CHECK-NEXT: --
-# CHECK-NEXT: {{^}}true # RUN: at line 4{{$}}
-# CHECK-NEXT: true
-# CHECK-NEXT: {{^}}false # RUN: at line 5{{$}}
-# CHECK-NEXT: false
-# CHECK-EMPTY:
-# CHECK-NEXT: --
-
-# CHECK-LABEL: FAIL: shtest-run-at-line :: external-shell/empty-run-line.txt
-
-# CHECK: Command Output (stderr)
-# CHECK-NEXT: --
-# CHECK-NEXT: {{^}}RUN: at line 2 has no command after substitutions{{$}}
-# CHECK-NEXT: {{^}}false # RUN: at line 3{{$}}
-# CHECK-NEXT: false
-# CHECK-EMPTY:
-# CHECK-NEXT: --
-
-# CHECK-LABEL: FAIL: shtest-run-at-line :: external-shell/line-continuation.txt
-
-# The execution trace from an external sh-like shell might print the commands
-# from a pipeline in any order, so this time just check that lit suppresses the
-# trace of the echo command for each 'RUN: at line N: cmd-line'.
-
-# CHECK: Command Output (stderr)
-# CHECK-NEXT: --
-# CHECK-NEXT: {{^}}echo 'foo bar' | FileCheck {{.*}} # RUN: at line 4
-# CHECK-NOT: RUN
-# CHECK: {{^}}echo 'foo baz' | FileCheck {{.*}} # RUN: at line 6
-# CHECK-NOT: RUN
-# CHECK: --
-
-# CHECK-LABEL: FAIL: shtest-run-at-line :: external-shell/run-line-with-newline.txt
-
-# CHECK: Command Output (stderr)
-# CHECK-NEXT: --
-# CHECK-NEXT: {{^}}echo abc |
-# CHECK-NEXT: FileCheck {{.*}} &&
-# CHECK-NEXT: false # RUN: at line 1
-# CHECK-NOT: RUN
-
-
-# CHECK-LABEL: FAIL: shtest-run-at-line :: internal-shell/basic.txt
-
-# CHECK: Command Output (stdout)
-# CHECK-NEXT: --
-# CHECK-NEXT: # RUN: at line 1
-# CHECK-NEXT: true
-# CHECK-NEXT: # executed command: true
-# CHECK-NEXT: # RUN: at line 2
-# CHECK-NEXT: false
-# CHECK-NEXT: # executed command: false
-# CHECK-NOT: RUN
-
-# CHECK-LABEL: FAIL: shtest-run-at-line :: internal-shell/empty-run-line.txt
-
-# CHECK: Command Output (stdout)
-# CHECK-NEXT: --
-# CHECK-NEXT: # RUN: at line 2 has no command after substitutions
-# CHECK-NEXT: # RUN: at line 3
-# CHECK-NEXT: false
-# CHECK-NEXT: # executed command: false
-# CHECK-NOT: RUN
-
-# CHECK-LABEL: FAIL: shtest-run-at-line :: internal-shell/line-continuation.txt
-
-# CHECK: Command Output (stdout)
-# CHECK-NEXT: --
-# CHECK-NEXT: # RUN: at line 1
-# CHECK-NEXT: : first line continued to second line
-# CHECK-NEXT: # executed command: : first line continued to second line
-# CHECK-NEXT: # RUN: at line 3
-# CHECK-NEXT: echo 'foo bar' | FileCheck {{.*}}
-# CHECK-NEXT: # executed command: echo 'foo bar'
-# CHECK-NEXT: # executed command: FileCheck {{.*}}
-# CHECK-NEXT: # RUN: at line 5
-# CHECK-NEXT: echo 'foo baz' | FileCheck {{.*}}
-# CHECK-NEXT: # executed command: echo 'foo baz'
-# CHECK-NEXT: # executed command: FileCheck {{.*}}
-# CHECK-NOT: RUN
-
-# CHECK-LABEL: FAIL: shtest-run-at-line :: internal-shell/run-line-with-newline.txt
-
-# CHECK: Command Output (stdout)
-# CHECK-NEXT: --
-# CHECK-NEXT: # RUN: at line 1
-# CHECK-NEXT: echo abc |
-# CHECK-NEXT: FileCheck {{.*}} &&
-# CHECK-NEXT: false
-# CHECK-NEXT: # executed command: echo abc
-# CHECK-NEXT: # executed command: FileCheck {{.*}}
-# CHECK-NEXT: # executed command: false
-# CHECK-NOT: RUN
diff --git a/llvm/utils/lit/tests/shtest-shell-symlinks.py b/llvm/utils/lit/tests/shtest-shell-symlinks.py
deleted file mode 100644
index cfd72a01b6d94..0000000000000
--- a/llvm/utils/lit/tests/shtest-shell-symlinks.py
+++ /dev/null
@@ -1,9 +0,0 @@
-# Check that the internal shell builtins correctly handle cases involving
-# symlinks.
-
-# REQUIRES: symlinks
-# RUN: echo test
-# RUN: %{lit} -v %{inputs}/shtest-shell-symlinks | FileCheck %s
-
-# CHECK: -- Testing: 1 test{{.*}}
-# CHECK: PASS: shtest-shell :: rm-symlink-dir.txt
diff --git a/llvm/utils/lit/tests/shtest-shell.py b/llvm/utils/lit/tests/shtest-shell.py
deleted file mode 100644
index 498f6bb0adc11..0000000000000
--- a/llvm/utils/lit/tests/shtest-shell.py
+++ /dev/null
@@ -1,637 +0,0 @@
-# Check the internal shell handling component of the ShTest format.
-
-# RUN: not %{lit} -v %{inputs}/shtest-shell > %t.out
-# RUN: FileCheck --input-file %t.out %s
-#
-# Test again in non-UTF shell to catch potential errors with python 2 seen
-# on stdout-encoding.txt
-# RUN: env PYTHONIOENCODING=ascii not %{lit} -a %{inputs}/shtest-shell > %t.ascii.out
-# RUN: FileCheck --input-file %t.ascii.out %s
-#
-# END.
-
-# CHECK: -- Testing:
-
-# CHECK: FAIL: shtest-shell :: colon-error.txt
-# CHECK: *** TEST 'shtest-shell :: colon-error.txt' FAILED ***
-# CHECK: :
-# CHECK: # .---command stderr{{-*}}
-# CHECK: # | Unsupported: ':' cannot be part of a pipeline
-# CHECK: # error: command failed with exit status: 127
-# CHECK: ***
-
-# CHECK: PASS: shtest-shell :: continuations.txt
-
-# CHECK: PASS: shtest-shell :: dev-null.txt
-
-# CHECK: FAIL: shtest-shell :: diff-b.txt
-# CHECK: *** TEST 'shtest-shell :: diff-b.txt' FAILED ***
-# CHECK: diff -b {{[^"]*}}.0 {{[^"]*}}.1
-# CHECK: # .---command stdout{{-*}}
-# CHECK: # | {{.*}}1,2
-# CHECK-NEXT: # | f o o
-# CHECK-NEXT: # | ! b a r
-# CHECK-NEXT: # | ---
-# CHECK-NEXT: # | f o o
-# CHECK-NEXT: # | ! bar
-# CHECK-NEXT: # `---{{-*}}
-# CHECK-NEXT: # error: command failed with exit status: 1
-# CHECK: ***
-
-
-# CHECK: FAIL: shtest-shell :: diff-encodings.txt
-# CHECK: *** TEST 'shtest-shell :: diff-encodings.txt' FAILED ***
-
-# CHECK: diff -u diff-in.bin diff-in.bin
-# CHECK-NEXT: # executed command: diff -u diff-in.bin diff-in.bin
-# CHECK-NOT: error
-
-# CHECK: diff -u diff-in.utf16 diff-in.bin && false || true
-# CHECK-NEXT: # executed command: diff -u diff-in.utf16 diff-in.bin
-# CHECK-NEXT: # .---command stdout{{-*}}
-# CHECK-NEXT: # | ---
-# CHECK-NEXT: # | +++
-# CHECK-NEXT: # | @@
-# CHECK-NEXT: # | {{.f.o.o.$}}
-# CHECK-NEXT: # | {{-.b.a.r.$}}
-# CHECK-NEXT: # | {{\+.b.a.r.}}
-# CHECK-NEXT: # | {{.b.a.z.$}}
-# CHECK-NEXT: # `---{{-*}}
-# CHECK-NEXT: # error: command failed with exit status: 1
-# CHECK-NEXT: # executed command: true
-
-# CHECK: diff -u diff-in.utf8 diff-in.bin && false || true
-# CHECK-NEXT: # executed command: diff -u diff-in.utf8 diff-in.bin
-# CHECK-NEXT: # .---command stdout{{-*}}
-# CHECK-NEXT: # | ---
-# CHECK-NEXT: # | +++
-# CHECK-NEXT: # | @@
-# CHECK-NEXT: # | -foo
-# CHECK-NEXT: # | -bar
-# CHECK-NEXT: # | -baz
-# CHECK-NEXT: # | {{\+.f.o.o.$}}
-# CHECK-NEXT: # | {{\+.b.a.r.}}
-# CHECK-NEXT: # | {{\+.b.a.z.$}}
-# CHECK-NEXT: # `---{{-*}}
-# CHECK-NEXT: # error: command failed with exit status: 1
-# CHECK-NEXT: # executed command: true
-
-# CHECK: diff -u diff-in.bin diff-in.utf8 && false || true
-# CHECK-NEXT: # executed command: diff -u diff-in.bin diff-in.utf8
-# CHECK-NEXT: # .---command stdout{{-*}}
-# CHECK-NEXT: # | ---
-# CHECK-NEXT: # | +++
-# CHECK-NEXT: # | @@
-# CHECK-NEXT: # | {{-.f.o.o.$}}
-# CHECK-NEXT: # | {{-.b.a.r.}}
-# CHECK-NEXT: # | {{-.b.a.z.$}}
-# CHECK-NEXT: # | +foo
-# CHECK-NEXT: # | +bar
-# CHECK-NEXT: # | +baz
-# CHECK-NEXT: # `---{{-*}}
-# CHECK-NEXT: # error: command failed with exit status: 1
-# CHECK-NEXT: # executed command: true
-
-# CHECK: cat diff-in.bin | diff -u - diff-in.bin
-# CHECK-NOT: error
-
-# CHECK: cat diff-in.bin | diff -u diff-in.bin -
-# CHECK-NOT: error
-
-# CHECK: cat diff-in.bin | diff -u diff-in.utf16 - && false || true
-# CHECK-NEXT: # executed command: cat diff-in.bin
-# CHECK-NEXT: # executed command: diff -u diff-in.utf16 -
-# CHECK-NEXT: # .---command stdout{{-*}}
-# CHECK-NEXT: # | ---
-# CHECK-NEXT: # | +++
-# CHECK-NEXT: # | @@
-# CHECK-NEXT: # | {{.f.o.o.$}}
-# CHECK-NEXT: # | {{-.b.a.r.$}}
-# CHECK-NEXT: # | {{\+.b.a.r.}}
-# CHECK-NEXT: # | {{.b.a.z.$}}
-# CHECK-NEXT: # `---{{-*}}
-# CHECK-NEXT: # error: command failed with exit status: 1
-# CHECK-NEXT: # executed command: true
-
-# CHECK: cat diff-in.bin | diff -u diff-in.utf8 - && false || true
-# CHECK-NEXT: # executed command: cat diff-in.bin
-# CHECK-NEXT: # executed command: diff -u diff-in.utf8 -
-# CHECK-NEXT: # .---command stdout{{-*}}
-# CHECK-NEXT: # | ---
-# CHECK-NEXT: # | +++
-# CHECK-NEXT: # | @@
-# CHECK-NEXT: # | -foo
-# CHECK-NEXT: # | -bar
-# CHECK-NEXT: # | -baz
-# CHECK-NEXT: # | {{\+.f.o.o.$}}
-# CHECK-NEXT: # | {{\+.b.a.r.}}
-# CHECK-NEXT: # | {{\+.b.a.z.$}}
-# CHECK-NEXT: # `---{{-*}}
-# CHECK-NEXT: # error: command failed with exit status: 1
-# CHECK-NEXT: # executed command: true
-
-# CHECK: cat diff-in.bin | diff -u - diff-in.utf8 && false || true
-# CHECK-NEXT: # executed command: cat diff-in.bin
-# CHECK-NEXT: # executed command: diff -u - diff-in.utf8
-# CHECK-NEXT: # .---command stdout{{-*}}
-# CHECK-NEXT: # | ---
-# CHECK-NEXT: # | +++
-# CHECK-NEXT: # | @@
-# CHECK-NEXT: # | {{-.f.o.o.$}}
-# CHECK-NEXT: # | {{-.b.a.r.}}
-# CHECK-NEXT: # | {{-.b.a.z.$}}
-# CHECK-NEXT: # | +foo
-# CHECK-NEXT: # | +bar
-# CHECK-NEXT: # | +baz
-# CHECK-NEXT: # `---{{-*}}
-# CHECK-NEXT: # error: command failed with exit status: 1
-# CHECK-NEXT: # executed command: true
-
-# CHECK: false
-
-# CHECK: ***
-
-
-# CHECK: FAIL: shtest-shell :: diff-error-1.txt
-# CHECK: *** TEST 'shtest-shell :: diff-error-1.txt' FAILED ***
-# CHECK: diff -B temp1.txt temp2.txt
-# CHECK: # .---command stderr{{-*}}
-# CHECK: # | Unsupported: 'diff': option -B not recognized
-# CHECK: # error: command failed with exit status: 1
-# CHECK: ***
-
-# CHECK: FAIL: shtest-shell :: diff-error-2.txt
-# CHECK: *** TEST 'shtest-shell :: diff-error-2.txt' FAILED ***
-# CHECK: diff temp.txt
-# CHECK: # .---command stderr{{-*}}
-# CHECK: # | Error: missing or extra operand
-# CHECK: # error: command failed with exit status: 1
-# CHECK: ***
-
-# CHECK: FAIL: shtest-shell :: diff-error-3.txt
-# CHECK: *** TEST 'shtest-shell :: diff-error-3.txt' FAILED ***
-# CHECK: diff temp.txt temp1.txt
-# CHECK: # .---command stderr{{-*}}
-# CHECK: # | Error: 'diff' command failed
-# CHECK: error: command failed with exit status: 1
-# CHECK: ***
-
-# CHECK: FAIL: shtest-shell :: diff-error-4.txt
-# CHECK: *** TEST 'shtest-shell :: diff-error-4.txt' FAILED ***
-# CHECK: Exit Code: 1
-# CHECK: # .---command stdout{{-*}}
-# CHECK-NEXT: # | {{.*}}diff-error-4.txt.tmp
-# CHECK-NEXT: # | {{.*}}diff-error-4.txt.tmp1
-# CHECK-NEXT: # | {{\*+}}
-# CHECK-NEXT: # | *** 1 ****
-# CHECK-NEXT: # | ! hello-first
-# CHECK-NEXT: # | --- 1 ----
-# CHECK-NEXT: # | ! hello-second
-# CHECK-NEXT: # `---{{-*}}
-# CHECK: ***
-
-# CHECK: FAIL: shtest-shell :: diff-error-5.txt
-# CHECK: *** TEST 'shtest-shell :: diff-error-5.txt' FAILED ***
-# CHECK: diff
-# CHECK: # .---command stderr{{-*}}
-# CHECK: # | Error: missing or extra operand
-# CHECK: # error: command failed with exit status: 1
-# CHECK: ***
-
-# CHECK: FAIL: shtest-shell :: diff-error-6.txt
-# CHECK: *** TEST 'shtest-shell :: diff-error-6.txt' FAILED ***
-# CHECK: diff
-# CHECK: # .---command stderr{{-*}}
-# CHECK: # | Error: missing or extra operand
-# CHECK: # error: command failed with exit status: 1
-# CHECK: ***
-
-
-# CHECK: FAIL: shtest-shell :: diff-pipes.txt
-
-# CHECK: *** TEST 'shtest-shell :: diff-pipes.txt' FAILED ***
-
-# CHECK: diff {{[^ ]*}}.foo {{.*}}.foo | FileCheck {{.*}}
-# CHECK-NOT: note
-# CHECK-NOT: error
-
-# CHECK: diff -u {{.*}}.foo {{.*}}.bar | FileCheck {{.*}} && false || true
-# CHECK-NEXT: # executed command: diff -u {{.+}}.foo{{.*}} {{.+}}.bar{{.*}}
-# CHECK-NEXT: # note: command had no output on stdout or stderr
-# CHECK-NEXT: # error: command failed with exit status: 1
-# CHECK-NEXT: # executed command: FileCheck
-# CHECK-NEXT: # executed command: true
-
-# CHECK: cat {{.*}}.foo | diff -u - {{.*}}.foo
-# CHECK-NOT: note
-# CHECK-NOT: error
-
-# CHECK: cat {{.*}}.foo | diff -u {{.*}}.foo -
-# CHECK-NOT: note
-# CHECK-NOT: error
-
-# CHECK: cat {{.*}}.bar | diff -u {{.*}}.foo - && false || true
-# CHECK-NEXT: # executed command: cat {{.+}}.bar{{.*}}
-# CHECK-NEXT: # executed command: diff -u {{.+}}.foo{{.*}} -
-# CHECK-NEXT: # .---command stdout{{-*}}
-# CHECK: # | @@
-# CHECK-NEXT: # | -foo
-# CHECK-NEXT: # | +bar
-# CHECK-NEXT: # `---{{-*}}
-# CHECK-NEXT: # error: command failed with exit status: 1
-# CHECK-NEXT: # executed command: true
-
-# CHECK: cat {{.*}}.bar | diff -u - {{.*}}.foo && false || true
-# CHECK-NEXT: # executed command: cat {{.+}}.bar{{.*}}
-# CHECK-NEXT: # executed command: diff -u - {{.+}}.foo{{.*}}
-# CHECK-NEXT: # .---command stdout{{-*}}
-# CHECK: # | @@
-# CHECK-NEXT: # | -bar
-# CHECK-NEXT: # | +foo
-# CHECK-NEXT: # `---{{-*}}
-# CHECK-NEXT: # error: command failed with exit status: 1
-# CHECK-NEXT: # executed command: true
-
-# CHECK: cat {{.*}}.foo | diff - {{.*}}.foo | FileCheck {{.*}}
-# CHECK-NOT: note
-# CHECK-NOT: error
-
-# CHECK: cat {{.*}}.bar | diff -u {{.*}}.foo - | FileCheck {{.*}}
-# CHECK-NEXT: # executed command: cat {{.+}}.bar{{.*}}
-# CHECK-NEXT: # executed command: diff -u {{.+}}.foo{{.*}} -
-# CHECK-NEXT: note: command had no output on stdout or stderr
-# CHECK-NEXT: error: command failed with exit status: 1
-# CHECK-NEXT: # executed command: FileCheck
-# CHECK-NEXT: # executed command: true
-
-# CHECK: false
-
-# CHECK: ***
-
-
-# CHECK: FAIL: shtest-shell :: diff-r-error-0.txt
-# CHECK: *** TEST 'shtest-shell :: diff-r-error-0.txt' FAILED ***
-# CHECK: diff -r
-# CHECK: # .---command stdout{{-*}}
-# CHECK: # | Only in {{.*}}dir1: dir1unique
-# CHECK: # | Only in {{.*}}dir2: dir2unique
-# CHECK: # error: command failed with exit status: 1
-
-# CHECK: FAIL: shtest-shell :: diff-r-error-1.txt
-# CHECK: *** TEST 'shtest-shell :: diff-r-error-1.txt' FAILED ***
-# CHECK: diff -r
-# CHECK: # .---command stdout{{-*}}
-# CHECK: # | *** {{.*}}dir1{{.*}}subdir{{.*}}f01
-# CHECK: # | --- {{.*}}dir2{{.*}}subdir{{.*}}f01
-# CHECK: # | ! 12345
-# CHECK: # | ! 00000
-# CHECK: # error: command failed with exit status: 1
-
-# CHECK: FAIL: shtest-shell :: diff-r-error-2.txt
-# CHECK: *** TEST 'shtest-shell :: diff-r-error-2.txt' FAILED ***
-# CHECK: diff -r
-# CHECK: # .---command stdout{{-*}}
-# CHECK: # | Only in {{.*}}dir2: extrafile
-# CHECK: # error: command failed with exit status: 1
-
-# CHECK: FAIL: shtest-shell :: diff-r-error-3.txt
-# CHECK: *** TEST 'shtest-shell :: diff-r-error-3.txt' FAILED ***
-# CHECK: diff -r
-# CHECK: # .---command stdout{{-*}}
-# CHECK: # | Only in {{.*}}dir1: extra_subdir
-# CHECK: # error: command failed with exit status: 1
-
-# CHECK: FAIL: shtest-shell :: diff-r-error-4.txt
-# CHECK: *** TEST 'shtest-shell :: diff-r-error-4.txt' FAILED ***
-# CHECK: diff -r
-# CHECK: # .---command stdout{{-*}}
-# CHECK: # | File {{.*}}dir1{{.*}}extra_subdir is a directory while file {{.*}}dir2{{.*}}extra_subdir is a regular file
-# CHECK: # error: command failed with exit status: 1
-
-# CHECK: FAIL: shtest-shell :: diff-r-error-5.txt
-# CHECK: *** TEST 'shtest-shell :: diff-r-error-5.txt' FAILED ***
-# CHECK: diff -r
-# CHECK: # .---command stdout{{-*}}
-# CHECK: # | Only in {{.*}}dir1: extra_subdir
-# CHECK: # error: command failed with exit status: 1
-
-# CHECK: FAIL: shtest-shell :: diff-r-error-6.txt
-# CHECK: *** TEST 'shtest-shell :: diff-r-error-6.txt' FAILED ***
-# CHECK: diff -r
-# CHECK: # .---command stdout{{-*}}
-# CHECK: # | File {{.*}}dir1{{.*}}extra_file is a regular empty file while file {{.*}}dir2{{.*}}extra_file is a directory
-# CHECK: # error: command failed with exit status: 1
-
-# CHECK: FAIL: shtest-shell :: diff-r-error-7.txt
-# CHECK: *** TEST 'shtest-shell :: diff-r-error-7.txt' FAILED ***
-# CHECK: diff -r - {{.*}}
-# CHECK: # .---command stderr{{-*}}
-# CHECK: # | Error: cannot recursively compare '-'
-# CHECK: # error: command failed with exit status: 1
-
-# CHECK: FAIL: shtest-shell :: diff-r-error-8.txt
-# CHECK: *** TEST 'shtest-shell :: diff-r-error-8.txt' FAILED ***
-# CHECK: diff -r {{.*}} -
-# CHECK: # .---command stderr{{-*}}
-# CHECK: # | Error: cannot recursively compare '-'
-# CHECK: # error: command failed with exit status: 1
-
-# CHECK: PASS: shtest-shell :: diff-r.txt
-
-
-# CHECK: FAIL: shtest-shell :: diff-strip-trailing-cr.txt
-
-# CHECK: *** TEST 'shtest-shell :: diff-strip-trailing-cr.txt' FAILED ***
-
-# CHECK: diff -u diff-in.dos diff-in.unix && false || true
-# CHECK-NEXT: # executed command: diff -u diff-in.dos diff-in.unix
-# CHECK-NEXT: # .---command stdout{{-*}}
-# CHECK: # | @@
-# CHECK-NEXT: # | -In this file, the
-# CHECK-NEXT: # | -sequence "\r\n"
-# CHECK-NEXT: # | -terminates lines.
-# CHECK-NEXT: # | +In this file, the
-# CHECK-NEXT: # | +sequence "\n"
-# CHECK-NEXT: # | +terminates lines.
-# CHECK-NEXT: # `---{{-*}}
-# CHECK-NEXT: # error: command failed with exit status: 1
-# CHECK-NEXT: # executed command: true
-
-# CHECK: diff -u diff-in.unix diff-in.dos && false || true
-# CHECK-NEXT: # executed command: diff -u diff-in.unix diff-in.dos
-# CHECK-NEXT: # .---command stdout{{-*}}
-# CHECK: # | @@
-# CHECK-NEXT: # | -In this file, the
-# CHECK-NEXT: # | -sequence "\n"
-# CHECK-NEXT: # | -terminates lines.
-# CHECK-NEXT: # | +In this file, the
-# CHECK-NEXT: # | +sequence "\r\n"
-# CHECK-NEXT: # | +terminates lines.
-# CHECK-NEXT: # `---{{-*}}
-# CHECK-NEXT: # error: command failed with exit status: 1
-# CHECK-NEXT: # executed command: true
-
-# CHECK: diff -u --strip-trailing-cr diff-in.dos diff-in.unix && false || true
-# CHECK-NEXT: executed command: diff -u --strip-trailing-cr diff-in.dos diff-in.unix
-# CHECK-NEXT: # .---command stdout{{-*}}
-# CHECK: # | @@
-# CHECK-NEXT: # | In this file, the
-# CHECK-NEXT: # | -sequence "\r\n"
-# CHECK-NEXT: # | +sequence "\n"
-# CHECK-NEXT: # | terminates lines.
-# CHECK-NEXT: # `---{{-*}}
-# CHECK-NEXT: # error: command failed with exit status: 1
-# CHECK-NEXT: # executed command: true
-
-# CHECK: diff -u --strip-trailing-cr diff-in.unix diff-in.dos && false || true
-# CHECK-NEXT: # executed command: diff -u --strip-trailing-cr diff-in.unix diff-in.dos
-# CHECK-NEXT: # .---command stdout{{-*}}
-# CHECK: # | @@
-# CHECK-NEXT: # | In this file, the
-# CHECK-NEXT: # | -sequence "\n"
-# CHECK-NEXT: # | +sequence "\r\n"
-# CHECK-NEXT: # | terminates lines.
-# CHECK-NEXT: # `---{{-*}}
-# CHECK-NEXT: # error: command failed with exit status: 1
-# CHECK-NEXT: # executed command: true
-
-# CHECK: false
-
-# CHECK: ***
-
-
-# CHECK: FAIL: shtest-shell :: diff-unified.txt
-
-# CHECK: *** TEST 'shtest-shell :: diff-unified.txt' FAILED ***
-
-# CHECK: diff -u {{.*}}.foo {{.*}}.bar && false || true
-# CHECK-NEXT: # executed command: diff -u {{.+}}.foo{{.*}} {{.+}}.bar{{.*}}
-# CHECK-NEXT: # .---command stdout{{-*}}
-# CHECK: # | @@ {{.*}} @@
-# CHECK-NEXT: # | 3
-# CHECK-NEXT: # | 4
-# CHECK-NEXT: # | 5
-# CHECK-NEXT: # | -6 foo
-# CHECK-NEXT: # | +6 bar
-# CHECK-NEXT: # | 7
-# CHECK-NEXT: # | 8
-# CHECK-NEXT: # | 9
-# CHECK-NEXT: # `---{{-*}}
-# CHECK-NEXT: # error: command failed with exit status: 1
-# CHECK-NEXT: # executed command: true
-
-# CHECK: diff -U 2 {{.*}}.foo {{.*}}.bar && false || true
-# CHECK-NEXT: # executed command: diff -U 2 {{.+}}.foo{{.*}} {{.+}}.bar{{.*}}
-# CHECK-NEXT: # .---command stdout{{-*}}
-# CHECK: # | @@ {{.*}} @@
-# CHECK-NEXT: # | 4
-# CHECK-NEXT: # | 5
-# CHECK-NEXT: # | -6 foo
-# CHECK-NEXT: # | +6 bar
-# CHECK-NEXT: # | 7
-# CHECK-NEXT: # | 8
-# CHECK-NEXT: # `---{{-*}}
-# CHECK-NEXT: # error: command failed with exit status: 1
-# CHECK-NEXT: # executed command: true
-
-# CHECK: diff -U4 {{.*}}.foo {{.*}}.bar && false || true
-# CHECK-NEXT: # executed command: diff -U4 {{.+}}.foo{{.*}} {{.+}}.bar{{.*}}
-# CHECK-NEXT: # .---command stdout{{-*}}
-# CHECK: # | @@ {{.*}} @@
-# CHECK-NEXT: # | 2
-# CHECK-NEXT: # | 3
-# CHECK-NEXT: # | 4
-# CHECK-NEXT: # | 5
-# CHECK-NEXT: # | -6 foo
-# CHECK-NEXT: # | +6 bar
-# CHECK-NEXT: # | 7
-# CHECK-NEXT: # | 8
-# CHECK-NEXT: # | 9
-# CHECK-NEXT: # | 10
-# CHECK-NEXT: # `---{{-*}}
-# CHECK-NEXT: # error: command failed with exit status: 1
-# CHECK-NEXT: # executed command: true
-
-# CHECK: diff -U0 {{.*}}.foo {{.*}}.bar && false || true
-# CHECK-NEXT: # executed command: diff -U0 {{.+}}.foo{{.*}} {{.+}}.bar{{.*}}
-# CHECK-NEXT: # .---command stdout{{-*}}
-# CHECK: # | @@ {{.*}} @@
-# CHECK-NEXT: # | -6 foo
-# CHECK-NEXT: # | +6 bar
-# CHECK-NEXT: # `---{{-*}}
-# CHECK-NEXT: # error: command failed with exit status: 1
-# CHECK-NEXT: # executed command: true
-
-# CHECK: diff -U 30.1 {{.*}} {{.*}} && false || true
-# CHECK: # executed command: diff -U 30.1 {{.*}} {{.*}}
-# CHECK: # .---command stderr{{-*}}
-# CHECK: # | Error: invalid '-U' argument: 30.1
-# CHECK: # error: command failed with exit status: 1
-# CHECK: # executed command: true
-
-# CHECK: diff -U-1 {{.*}} {{.*}} && false || true
-# CHECK: # executed command: diff -U-1 {{.*}} {{.*}}
-# CHECK: # .---command stderr{{-*}}
-# CHECK: # | Error: invalid '-U' argument: -1
-# CHECK: # error: command failed with exit status: 1
-# CHECK: # executed command: true
-
-# CHECK: false
-
-# CHECK: ***
-
-
-# CHECK: FAIL: shtest-shell :: diff-w.txt
-# CHECK: *** TEST 'shtest-shell :: diff-w.txt' FAILED ***
-# CHECK: diff -w {{.*}}.0 {{.*}}.1
-# CHECK: # .---command stdout{{-*}}
-# CHECK: # | {{\*+}} 1,3
-# CHECK-NEXT: # | foo
-# CHECK-NEXT: # | bar
-# CHECK-NEXT: # | ! baz
-# CHECK-NEXT: # | ---
-# CHECK-NEXT: # | foo
-# CHECK-NEXT: # | bar
-# CHECK-NEXT: # | ! bat
-# CHECK-NEXT: # `---{{-*}}
-# CHECK-NEXT: # error: command failed with exit status: 1
-# CHECK: ***
-
-# CHECK: FAIL: shtest-shell :: echo-at-redirect-stderr.txt
-# CHECK: *** TEST 'shtest-shell :: echo-at-redirect-stderr.txt' FAILED ***
-# CHECK: @echo 2> {{.*}}
-# CHECK: # executed command: @echo
-# CHECK: # .---command stderr{{-*}}
-# CHECK: # | stdin and stderr redirects not supported for @echo
-# CHECK: error: command failed with exit status:
-
-# CHECK: FAIL: shtest-shell :: echo-at-redirect-stdin.txt
-# CHECK: *** TEST 'shtest-shell :: echo-at-redirect-stdin.txt' FAILED ***
-# CHECK: @echo < {{.*}}
-# CHECK: # executed command: @echo
-# CHECK: # .---command stderr{{-*}}
-# CHECK: # | stdin and stderr redirects not supported for @echo
-# CHECK: error: command failed with exit status:
-
-# CHECK: FAIL: shtest-shell :: echo-redirect-stderr.txt
-# CHECK: *** TEST 'shtest-shell :: echo-redirect-stderr.txt' FAILED ***
-# CHECK: echo 2> {{.*}}
-# CHECK: # executed command: echo
-# CHECK: # .---command stderr{{-*}}
-# CHECK: # | stdin and stderr redirects not supported for echo
-# CHECK: error: command failed with exit status:
-
-# CHECK: FAIL: shtest-shell :: echo-redirect-stdin.txt
-# CHECK: *** TEST 'shtest-shell :: echo-redirect-stdin.txt' FAILED ***
-# CHECK: echo < {{.*}}
-# CHECK: # executed command: echo
-# CHECK: # .---command stderr{{-*}}
-# CHECK: # | stdin and stderr redirects not supported for echo
-# CHECK: error: command failed with exit status:
-
-# CHECK: FAIL: shtest-shell :: error-0.txt
-# CHECK: *** TEST 'shtest-shell :: error-0.txt' FAILED ***
-# CHECK: not-a-real-command
-# CHECK: # .---command stderr{{-*}}
-# CHECK: # | 'not-a-real-command': command not found
-# CHECK: # error: command failed with exit status: 127
-# CHECK: ***
-
-# FIXME: The output here sucks.
-#
-# CHECK: UNRESOLVED: shtest-shell :: error-1.txt
-# CHECK-NEXT: *** TEST 'shtest-shell :: error-1.txt' FAILED ***
-# CHECK-NEXT: Exit Code: 1
-# CHECK-EMPTY:
-# CHECK-NEXT: Command Output (stdout):
-# CHECK-NEXT: --
-# CHECK-NEXT: # shell parser error on RUN: at line 3: echo "missing quote
-# CHECK-EMPTY:
-# CHECK-NEXT: --
-# CHECK-EMPTY:
-# CHECK-NEXT: ***
-
-# CHECK: FAIL: shtest-shell :: error-2.txt
-# CHECK: *** TEST 'shtest-shell :: error-2.txt' FAILED ***
-# CHECK: Unsupported redirect:
-# CHECK: ***
-
-# CHECK: FAIL: shtest-shell :: mkdir-error-0.txt
-# CHECK: *** TEST 'shtest-shell :: mkdir-error-0.txt' FAILED ***
-# CHECK: mkdir -p temp | rm -rf temp
-# CHECK: # .---command stderr{{-*}}
-# CHECK: # | Unsupported: 'mkdir' cannot be part of a pipeline
-# CHECK: # error: command failed with exit status: 127
-# CHECK: ***
-
-# CHECK: FAIL: shtest-shell :: mkdir-error-1.txt
-# CHECK: *** TEST 'shtest-shell :: mkdir-error-1.txt' FAILED ***
-# CHECK: mkdir -p -m 777 temp
-# CHECK: # .---command stderr{{-*}}
-# CHECK: # | Unsupported: 'mkdir': option -m not recognized
-# CHECK: # error: command failed with exit status: 127
-# CHECK: ***
-
-# CHECK: FAIL: shtest-shell :: mkdir-error-2.txt
-# CHECK: *** TEST 'shtest-shell :: mkdir-error-2.txt' FAILED ***
-# CHECK: mkdir -p
-# CHECK: # .---command stderr{{-*}}
-# CHECK: # | Error: 'mkdir' is missing an operand
-# CHECK: # error: command failed with exit status: 127
-# CHECK: ***
-
-# CHECK: FAIL: shtest-shell :: pipefail.txt
-# CHECK: *** TEST 'shtest-shell :: pipefail.txt' FAILED ***
-# CHECK: error: command failed with exit status: 1
-# CHECK: ***
-
-# CHECK: PASS: shtest-shell :: redirects.txt
-
-# CHECK: FAIL: shtest-shell :: rm-error-0.txt
-# CHECK: *** TEST 'shtest-shell :: rm-error-0.txt' FAILED ***
-# CHECK: rm -rf temp | echo "hello"
-# CHECK: # .---command stderr{{-*}}
-# CHECK: # | Unsupported: 'rm' cannot be part of a pipeline
-# CHECK: # error: command failed with exit status: 127
-# CHECK: ***
-
-# CHECK: FAIL: shtest-shell :: rm-error-1.txt
-# CHECK: *** TEST 'shtest-shell :: rm-error-1.txt' FAILED ***
-# CHECK: rm -f -v temp
-# CHECK: # .---command stderr{{-*}}
-# CHECK: # | Unsupported: 'rm': option -v not recognized
-# CHECK: # error: command failed with exit status: 127
-# CHECK: ***
-
-# CHECK: FAIL: shtest-shell :: rm-error-2.txt
-# CHECK: *** TEST 'shtest-shell :: rm-error-2.txt' FAILED ***
-# CHECK: rm -r hello
-# CHECK: # .---command stderr{{-*}}
-# CHECK: # | Error: 'rm' command failed
-# CHECK: # error: command failed with exit status: 1
-# CHECK: ***
-
-# CHECK: FAIL: shtest-shell :: rm-error-3.txt
-# CHECK: *** TEST 'shtest-shell :: rm-error-3.txt' FAILED ***
-# CHECK: Exit Code: 1
-# CHECK: ***
-
-# CHECK: PASS: shtest-shell :: rm-unicode-0.txt
-# CHECK: PASS: shtest-shell :: sequencing-0.txt
-# CHECK: XFAIL: shtest-shell :: sequencing-1.txt
-
-# CHECK: FAIL: shtest-shell :: stdout-encoding.txt
-# CHECK: *** TEST 'shtest-shell :: stdout-encoding.txt' FAILED ***
-# CHECK: cat diff-in.bin
-# CHECK: # .---command stdout{{-*}}
-# CHECK-NEXT: # | {{.f.o.o.$}}
-# CHECK-NEXT: # | {{.b.a.r.}}
-# CHECK-NEXT: # | {{.b.a.z.$}}
-# CHECK-NEXT: # `---{{-*}}
-# CHECK-NOT: error
-# CHECK: false
-# CHECK: ***
-
-# CHECK: PASS: shtest-shell :: valid-shell.txt
-# CHECK: Unresolved Tests (1)
-# CHECK: Failed Tests (37)
diff --git a/llvm/utils/lit/tests/shtest-timeout.py b/llvm/utils/lit/tests/shtest-timeout.py
deleted file mode 100644
index 1576b89ea1821..0000000000000
--- a/llvm/utils/lit/tests/shtest-timeout.py
+++ /dev/null
@@ -1,80 +0,0 @@
-# REQUIRES: lit-max-individual-test-time
-
-# llvm.org/PR33944
-# UNSUPPORTED: system-windows
-
-###############################################################################
-# Check tests can hit timeout when set
-###############################################################################
-
-# Test per test timeout using external shell
-# RUN: not %{lit} \
-# RUN: %{inputs}/shtest-timeout/infinite_loop.py \
-# RUN: -j 1 -v --debug --timeout 1 --param external=1 > %t.extsh.out 2> %t.extsh.err
-# RUN: FileCheck --check-prefix=CHECK-OUT-COMMON < %t.extsh.out %s
-# RUN: FileCheck --check-prefix=CHECK-EXTSH-ERR < %t.extsh.err %s
-#
-# CHECK-EXTSH-ERR: Using external shell
-
-# Test per test timeout using internal shell
-# RUN: not %{lit} \
-# RUN: %{inputs}/shtest-timeout/infinite_loop.py \
-# RUN: -j 1 -v --debug --timeout 1 --param external=0 > %t.intsh.out 2> %t.intsh.err
-# RUN: FileCheck --check-prefix=CHECK-OUT-COMMON < %t.intsh.out %s
-# RUN: FileCheck --check-prefix=CHECK-INTSH-OUT < %t.intsh.out %s
-# RUN: FileCheck --check-prefix=CHECK-INTSH-ERR < %t.intsh.err %s
-
-# CHECK-INTSH-OUT: TIMEOUT: per_test_timeout :: infinite_loop.py
-# CHECK-INTSH-OUT: command reached timeout: True
-
-# CHECK-INTSH-ERR: Using internal shell
-
-# Test per test timeout set via a config file rather than on the command line
-# RUN: not %{lit} \
-# RUN: %{inputs}/shtest-timeout/infinite_loop.py \
-# RUN: -j 1 -v --debug --param external=0 \
-# RUN: --param set_timeout=1 > %t.cfgset.out 2> %t.cfgset.err
-# RUN: FileCheck --check-prefix=CHECK-OUT-COMMON < %t.cfgset.out %s
-# RUN: FileCheck --check-prefix=CHECK-CFGSET-ERR < %t.cfgset.err %s
-#
-# CHECK-CFGSET-ERR: Using internal shell
-
-# CHECK-OUT-COMMON: TIMEOUT: per_test_timeout :: infinite_loop.py
-# CHECK-OUT-COMMON: Timeout: Reached timeout of 1 seconds
-# CHECK-OUT-COMMON: Timed Out: 1
-
-
-###############################################################################
-# Check tests can complete in with a timeout set
-#
-# `short.py` should execute quickly so we shouldn't wait anywhere near the
-# 3600 second timeout.
-###############################################################################
-
-# Test per test timeout using external shell
-# RUN: %{lit} \
-# RUN: %{inputs}/shtest-timeout/short.py \
-# RUN: -j 1 -v --debug --timeout 3600 --param external=1 > %t.pass.extsh.out 2> %t.pass.extsh.err
-# RUN: FileCheck --check-prefix=CHECK-OUT-COMMON-SHORT < %t.pass.extsh.out %s
-# RUN: FileCheck --check-prefix=CHECK-EXTSH-ERR < %t.pass.extsh.err %s
-
-# Test per test timeout using internal shell
-# RUN: %{lit} \
-# RUN: %{inputs}/shtest-timeout/short.py \
-# RUN: -j 1 -v --debug --timeout 3600 --param external=0 > %t.pass.intsh.out 2> %t.pass.intsh.err
-# RUN: FileCheck --check-prefix=CHECK-OUT-COMMON-SHORT < %t.pass.intsh.out %s
-# RUN: FileCheck --check-prefix=CHECK-INTSH-ERR < %t.pass.intsh.err %s
-
-# CHECK-OUT-COMMON-SHORT: PASS: per_test_timeout :: short.py
-# CHECK-OUT-COMMON-SHORT: Passed: 1
-
-# Test per test timeout via a config file and on the command line.
-# The value set on the command line should override the config file.
-# RUN: %{lit} \
-# RUN: %{inputs}/shtest-timeout/short.py \
-# RUN: -j 1 -v --debug --param external=0 \
-# RUN: --param set_timeout=1 --timeout=3600 > %t.pass.cmdover.out 2> %t.pass.cmdover.err
-# RUN: FileCheck --check-prefix=CHECK-OUT-COMMON-SHORT < %t.pass.cmdover.out %s
-# RUN: FileCheck --check-prefix=CHECK-CMDLINE-OVERRIDE-ERR < %t.pass.cmdover.err %s
-
-# CHECK-CMDLINE-OVERRIDE-ERR: Forcing timeout to be 3600 seconds
diff --git a/llvm/utils/lit/tests/shtest-ulimit-nondarwin.py b/llvm/utils/lit/tests/shtest-ulimit-nondarwin.py
deleted file mode 100644
index be2627be366ed..0000000000000
--- a/llvm/utils/lit/tests/shtest-ulimit-nondarwin.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# Check the ulimit command
-
-# ulimit does not work on non-POSIX platforms.
-# These tests are specific to options that Darwin does not support.
-# UNSUPPORTED: system-windows, system-cygwin, system-darwin, system-aix, system-solaris, system-freebsd
-
-# RUN: not %{lit} -v %{inputs}/shtest-ulimit-nondarwin | FileCheck %s
-
-# CHECK: -- Testing: 2 tests{{.*}}
-
-# CHECK-LABEL: FAIL: shtest-ulimit :: ulimit_okay.txt ({{[^)]*}})
-# CHECK: ulimit -v 1048576
-# CHECK: ulimit -s 256
-# CHECK: RLIMIT_AS=1073741824
-# CHECK: RLIMIT_STACK=262144
-
-# CHECK-LABEL: FAIL: shtest-ulimit :: ulimit_unlimited.txt ({{[^)]*}})
-# CHECK: ulimit -f 5
-# CHECK: RLIMIT_FSIZE=5
-# CHECK: ulimit -f unlimited
-# CHECK: RLIMIT_FSIZE=-1
diff --git a/llvm/utils/lit/tests/shtest-ulimit.py b/llvm/utils/lit/tests/shtest-ulimit.py
deleted file mode 100644
index 582477bef65fc..0000000000000
--- a/llvm/utils/lit/tests/shtest-ulimit.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# Check the ulimit command
-
-# ulimit does not work on non-POSIX platforms.
-# Solaris for some reason does not respect ulimit -n, so mark it unsupported
-# as well.
-# UNSUPPORTED: system-windows, system-cygwin, system-solaris
-
-# RUN: %{python} %S/Inputs/shtest-ulimit/print_limits.py | grep RLIMIT_NOFILE \
-# RUN: | sed -n -e 's/.*=//p' | tr -d '\n' > %t.nofile_limit
-
-# RUN: not %{lit} -v %{inputs}/shtest-ulimit --order=lexical \
-# RUN: | FileCheck -DBASE_NOFILE_LIMIT=%{readfile:%t.nofile_limit} %s
-
-# CHECK: -- Testing: 3 tests{{.*}}
-
-# CHECK-LABEL: FAIL: shtest-ulimit :: ulimit-bad-arg.txt ({{[^)]*}})
-# CHECK: ulimit -n
-# CHECK: 'ulimit' requires two arguments
-
-# CHECK-LABEL: FAIL: shtest-ulimit :: ulimit_okay.txt ({{[^)]*}})
-# CHECK: ulimit -n 50
-# CHECK: ulimit -f 5
-# CHECK: RLIMIT_NOFILE=50
-# CHECK: RLIMIT_FSIZE=5
-
-# CHECK-LABEL: FAIL: shtest-ulimit :: ulimit_reset.txt ({{[^)]*}})
-# CHECK: RLIMIT_NOFILE=[[BASE_NOFILE_LIMIT]]
diff --git a/llvm/utils/lit/tests/shtest-umask.py b/llvm/utils/lit/tests/shtest-umask.py
deleted file mode 100644
index 8af81ec3b4ebd..0000000000000
--- a/llvm/utils/lit/tests/shtest-umask.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# Check the umask command
-
-# RUN: not %{lit} -v %{inputs}/shtest-umask | FileCheck -match-full-lines %s
-# TODO(boomanaiden154): We should be asserting that we get expected behavior
-# on Windows rather than just listing this as unsupported.
-# UNSUPPORTED: system-windows
-
-# CHECK: -- Testing: 3 tests{{.*}}
-
-# CHECK-LABEL: FAIL: shtest-umask :: umask-bad-arg.txt ({{[^)]*}})
-# CHECK: umask bad
-# CHECK: # | Error: 'umask': invalid literal {{.*}}
-
-# CHECK-LABEL: FAIL: shtest-umask :: umask-too-many-args.txt ({{[^)]*}})
-# CHECK: umask 0 0
-# CHECK: # | 'umask' supports only one argument
-
-# CHECK: Total Discovered Tests: 3
-# CHECK: {{Passed|Unsupported}}: 1 {{\([0-9]*\.[0-9]*%\)}}
-# CHECK: Failed{{ *}}: 2 {{\([0-9]*\.[0-9]*%\)}}
-# CHECK-NOT: {{.}}
diff --git a/llvm/utils/lit/tests/substitutions.py b/llvm/utils/lit/tests/substitutions.py
deleted file mode 100644
index aa461531628e9..0000000000000
--- a/llvm/utils/lit/tests/substitutions.py
+++ /dev/null
@@ -1,7 +0,0 @@
-# Basic test for substitutions.
-#
-# RUN: echo %{s:basename} | FileCheck %s --check-prefix=BASENAME
-# RUN: echo %{t:stem} %basename_t | FileCheck %s --check-prefix=TMPBASENAME
-
-# BASENAME: substitutions.py
-# TMPBASENAME: [[FIRST:[^[:space:]]+]] [[FIRST]]
diff --git a/llvm/utils/lit/tests/test-data-micro.py b/llvm/utils/lit/tests/test-data-micro.py
deleted file mode 100644
index 7aea434489d67..0000000000000
--- a/llvm/utils/lit/tests/test-data-micro.py
+++ /dev/null
@@ -1,21 +0,0 @@
-# Test features related to formats which support reporting additional test data.
-# and multiple test results.
-
-# RUN: %{lit} -v %{inputs}/test-data-micro | FileCheck %s
-
-# CHECK: -- Testing:
-
-# CHECK: PASS: test-data-micro :: micro-tests.ini
-# CHECK-NEXT: *** TEST 'test-data-micro :: micro-tests.ini' RESULTS ***
-# CHECK-NEXT: value0: 1
-# CHECK-NEXT: value1: 2.3456
-# CHECK-NEXT: ***
-# CHECK-NEXT: *** MICRO-TEST: test0
-# CHECK-NEXT: micro_value0: 4
-# CHECK-NEXT: micro_value1: 1.3
-# CHECK-NEXT: *** MICRO-TEST: test1
-# CHECK-NEXT: micro_value0: 4
-# CHECK-NEXT: micro_value1: 1.3
-# CHECK-NEXT: *** MICRO-TEST: test2
-# CHECK-NEXT: micro_value0: 4
-# CHECK-NEXT: micro_value1: 1.3
diff --git a/llvm/utils/lit/tests/test-data.py b/llvm/utils/lit/tests/test-data.py
deleted file mode 100644
index 6d2df74fd5a4d..0000000000000
--- a/llvm/utils/lit/tests/test-data.py
+++ /dev/null
@@ -1,13 +0,0 @@
-# Test features related to formats which support reporting additional test data.
-
-# RUN: %{lit} -v %{inputs}/test-data > %t.out
-# RUN: FileCheck < %t.out %s
-
-# CHECK: -- Testing:
-
-# CHECK: PASS: test-data :: metrics.ini
-# CHECK-NEXT: *** TEST 'test-data :: metrics.ini' RESULTS ***
-# CHECK-NEXT: value0: 1
-# CHECK-NEXT: value1: 2.3456
-# CHECK-NEXT: value2: "stringy"
-# CHECK-NEXT: ***
diff --git a/llvm/utils/lit/tests/test-output-micro-resultdb.py b/llvm/utils/lit/tests/test-output-micro-resultdb.py
deleted file mode 100644
index a67a17916f237..0000000000000
--- a/llvm/utils/lit/tests/test-output-micro-resultdb.py
+++ /dev/null
@@ -1,63 +0,0 @@
-# RUN: %{lit} -j 1 -v %{inputs}/test-data-micro --resultdb-output %t.results.out
-# RUN: FileCheck < %t.results.out %s
-# RUN: rm %t.results.out
-
-
-# CHECK: {
-# CHECK: "__version__"
-# CHECK: "elapsed"
-# CHECK-NEXT: "tests": [
-# CHECK-NEXT: {
-# CHECK-NEXT: "artifacts": {
-# CHECK-NEXT: "artifact-content-in-request": {
-# CHECK-NEXT: "contents": "VGVzdCBwYXNzZWQu"
-# CHECK-NEXT: }
-# CHECK-NEXT: },
-# CHECK-NEXT: "duration"
-# CHECK-NEXT: "expected": true,
-# CHECK-NEXT: "start_time"
-# CHECK-NEXT: "status": "PASS",
-# CHECK-NEXT: "summary_html": "<p><text-artifact artifact-id=\"artifact-content-in-request\"></p>",
-# CHECK-NEXT: "testId": "test-data-micro :: micro-tests.ini"
-# CHECK-NEXT: },
-# CHECK-NEXT: {
-# CHECK-NEXT: "artifacts": {
-# CHECK-NEXT: "artifact-content-in-request": {
-# CHECK-NEXT: "contents": ""
-# CHECK-NEXT: }
-# CHECK-NEXT: },
-# CHECK-NEXT: "duration"
-# CHECK-NEXT: "expected": true,
-# CHECK-NEXT: "start_time"
-# CHECK-NEXT: "status": "PASS",
-# CHECK-NEXT: "summary_html": "<p><text-artifact artifact-id=\"artifact-content-in-request\"></p>",
-# CHECK-NEXT: "testId": "test-data-micro :: micro-tests.ini:test0microres"
-# CHECK-NEXT: },
-# CHECK-NEXT: {
-# CHECK-NEXT: "artifacts": {
-# CHECK-NEXT: "artifact-content-in-request": {
-# CHECK-NEXT: "contents": ""
-# CHECK-NEXT: }
-# CHECK-NEXT: },
-# CHECK-NEXT: "duration"
-# CHECK-NEXT: "expected": true,
-# CHECK-NEXT: "start_time"
-# CHECK-NEXT: "status": "PASS",
-# CHECK-NEXT: "summary_html": "<p><text-artifact artifact-id=\"artifact-content-in-request\"></p>",
-# CHECK-NEXT: "testId": "test-data-micro :: micro-tests.ini:test1microres"
-# CHECK-NEXT: },
-# CHECK-NEXT: {
-# CHECK-NEXT: "artifacts": {
-# CHECK-NEXT: "artifact-content-in-request": {
-# CHECK-NEXT: "contents": ""
-# CHECK-NEXT: }
-# CHECK-NEXT: },
-# CHECK-NEXT: "duration"
-# CHECK-NEXT: "expected": true,
-# CHECK-NEXT: "start_time"
-# CHECK-NEXT: "status": "PASS",
-# CHECK-NEXT: "summary_html": "<p><text-artifact artifact-id=\"artifact-content-in-request\"></p>",
-# CHECK-NEXT: "testId": "test-data-micro :: micro-tests.ini:test2microres"
-# CHECK-NEXT: }
-# CHECK-NEXT: ]
-# CHECK-NEXT: }
diff --git a/llvm/utils/lit/tests/test-output-micro.py b/llvm/utils/lit/tests/test-output-micro.py
deleted file mode 100644
index 9c855b3cdcacd..0000000000000
--- a/llvm/utils/lit/tests/test-output-micro.py
+++ /dev/null
@@ -1,51 +0,0 @@
-# RUN: %{lit} -v %{inputs}/test-data-micro --output %t.results.out
-# RUN: FileCheck < %t.results.out %s
-# RUN: rm %t.results.out
-
-
-# CHECK: {
-# CHECK: "__version__"
-# CHECK: "elapsed"
-# CHECK-NEXT: "tests": [
-# CHECK-NEXT: {
-# CHECK-NEXT: "code": "PASS",
-# CHECK-NEXT: "elapsed": null,
-# CHECK-NEXT: "metrics": {
-# CHECK-NEXT: "micro_value0": 4,
-# CHECK-NEXT: "micro_value1": 1.3
-# CHECK-NEXT: },
-# CHECK-NEXT: "name": "test-data-micro :: micro-tests.ini:test{{[0-2]}}",
-# CHECK-NEXT: "output": ""
-# CHECK-NEXT: },
-# CHECK-NEXT: {
-# CHECK-NEXT: "code": "PASS",
-# CHECK-NEXT: "elapsed": null,
-# CHECK-NEXT: "metrics": {
-# CHECK-NEXT: "micro_value0": 4,
-# CHECK-NEXT: "micro_value1": 1.3
-# CHECK-NEXT: },
-# CHECK-NEXT: "name": "test-data-micro :: micro-tests.ini:test{{[0-2]}}",
-# CHECK-NEXT: "output": ""
-# CHECK-NEXT: },
-# CHECK-NEXT: {
-# CHECK-NEXT: "code": "PASS",
-# CHECK-NEXT: "elapsed": null,
-# CHECK-NEXT: "metrics": {
-# CHECK-NEXT: "micro_value0": 4,
-# CHECK-NEXT: "micro_value1": 1.3
-# CHECK-NEXT: },
-# CHECK-NEXT: "name": "test-data-micro :: micro-tests.ini:test{{[0-2]}}",
-# CHECK-NEXT: "output": ""
-# CHECK-NEXT: },
-# CHECK-NEXT: {
-# CHECK-NEXT: "code": "PASS",
-# CHECK-NEXT: "elapsed": {{[-+0-9.eE]+}},
-# CHECK-NEXT: "metrics": {
-# CHECK-NEXT: "value0": 1,
-# CHECK-NEXT: "value1": 2.3456
-# CHECK-NEXT: },
-# CHECK-NEXT: "name": "test-data-micro :: micro-tests.ini",
-# CHECK-NEXT: "output": "Test passed."
-# CHECK-NEXT: }
-# CHECK-NEXT: ]
-# CHECK-NEXT: }
diff --git a/llvm/utils/lit/tests/test-output-resultdb.py b/llvm/utils/lit/tests/test-output-resultdb.py
deleted file mode 100644
index a4d3c278ba9a9..0000000000000
--- a/llvm/utils/lit/tests/test-output-resultdb.py
+++ /dev/null
@@ -1,44 +0,0 @@
-# RUN: %{lit} -j 1 -v %{inputs}/test-data --resultdb-output %t.results.out > %t.out
-# RUN: FileCheck < %t.results.out %s
-# RUN: %{lit} -j 1 -v %{inputs}/googletest-cmd-wrapper --resultdb-output %t.results-unit.out > %t.out
-# RUN: FileCheck < %t.results-unit.out --check-prefix=UNIT %s
-
-# CHECK: {
-# CHECK: "__version__"
-# CHECK: "elapsed"
-# CHECK-NEXT: "tests": [
-# CHECK-NEXT: {
-# CHECK-NEXT: "artifacts": {
-# CHECK-NEXT: "artifact-content-in-request": {
-# CHECK-NEXT: "contents": "VGVzdCBwYXNzZWQu"
-# CHECK-NEXT: }
-# CHECK-NEXT: },
-# CHECK-NEXT: "duration"
-# CHECK-NEXT: "expected": true,
-# CHECK-NEXT: "start_time"
-# CHECK-NEXT: "status": "PASS",
-# CHECK-NEXT: "summary_html": "<p><text-artifact artifact-id=\"artifact-content-in-request\"></p>",
-# CHECK-NEXT: "testId": "test-data :: metrics.ini"
-# CHECK-NEXT: }
-# CHECK-NEXT: ]
-# CHECK-NEXT: }
-
-# UNIT: {
-# UNIT: "__version__"
-# UNIT: "elapsed"
-# UNIT-NEXT: "tests": [
-# UNIT-NEXT: {
-# UNIT-NEXT: "artifacts": {
-# UNIT-NEXT: "artifact-content-in-request": {
-# UNIT-NEXT: "contents": ""
-# UNIT-NEXT: }
-# UNIT-NEXT: },
-# UNIT-NEXT: "duration"
-# UNIT-NEXT: "expected": true,
-# UNIT-NEXT: "start_time"
-# UNIT-NEXT: "status": "PASS",
-# UNIT-NEXT: "summary_html": "<p><text-artifact artifact-id=\"artifact-content-in-request\"></p>",
-# UNIT-NEXT: "testId": "googletest-cmd-wrapper :: DummySubDir/OneTest.exe/FirstTest/subTestA"
-# UNIT-NEXT: }
-# UNIT-NEXT: ]
-# UNIT-NEXT: }
diff --git a/llvm/utils/lit/tests/test-output.py b/llvm/utils/lit/tests/test-output.py
deleted file mode 100644
index 86b3bb4c7509e..0000000000000
--- a/llvm/utils/lit/tests/test-output.py
+++ /dev/null
@@ -1,20 +0,0 @@
-# RUN: %{lit} -v %{inputs}/test-data --output %t.results.out > %t.out
-# RUN: FileCheck < %t.results.out %s
-
-# CHECK: {
-# CHECK: "__version__"
-# CHECK: "elapsed"
-# CHECK-NEXT: "tests": [
-# CHECK-NEXT: {
-# CHECK-NEXT: "code": "PASS",
-# CHECK-NEXT: "elapsed": {{[-+0-9.eE]+}},
-# CHECK-NEXT: "metrics": {
-# CHECK-NEXT: "value0": 1,
-# CHECK-NEXT: "value1": 2.3456,
-# CHECK-NEXT: "value2": "stringy"
-# CHECK-NEXT: }
-# CHECK-NEXT: "name": "test-data :: metrics.ini",
-# CHECK-NEXT: "output": "Test passed."
-# CHECK-NEXT: }
-# CHECK-NEXT: ]
-# CHECK-NEXT: }
diff --git a/llvm/utils/lit/tests/time-tests.py b/llvm/utils/lit/tests/time-tests.py
deleted file mode 100644
index 20b83a64330f0..0000000000000
--- a/llvm/utils/lit/tests/time-tests.py
+++ /dev/null
@@ -1,15 +0,0 @@
-## Check that --skip-test-time-recording skips .lit_test_times.txt recording.
-
-# RUN: %{lit-no-order-opt} --skip-test-time-recording %{inputs}/time-tests
-# RUN: not ls %{inputs}/time-tests/.lit_test_times.txt
-
-## Check that --time-tests generates a printed histogram.
-
-# RUN: %{lit-no-order-opt} --time-tests %{inputs}/time-tests > %t.out
-# RUN: FileCheck < %t.out %s
-# RUN: rm %{inputs}/time-tests/.lit_test_times.txt
-
-# CHECK: Tests Times:
-# CHECK-NEXT: --------------------------------------------------------------------------
-# CHECK-NEXT: [ Range ] :: [ Percentage ] :: [Count]
-# CHECK-NEXT: --------------------------------------------------------------------------
diff --git a/llvm/utils/lit/tests/timeout-hang.py b/llvm/utils/lit/tests/timeout-hang.py
deleted file mode 100644
index edb23affad578..0000000000000
--- a/llvm/utils/lit/tests/timeout-hang.py
+++ /dev/null
@@ -1,36 +0,0 @@
-# REQUIRES: lit-max-individual-test-time
-
-# Python has some issues dealing with exceptions when multiprocessing,
-# which can cause hangs. Previously this could occur when we encountered
-# an internal shell exception, and had a timeout set.
-
-# This test runs a lit test that tries to launch a non-existent file,
-# throwing an exception. We expect this to fail immediately, rather than
-# timeout.
-
-# lit should return immediately once it fails to execute the non-existent file.
-# This will take a variable amount of time depending on process scheduling, but
-# it should always be significantly less than the hard timeout, which is the
-# point where lit would cancel the test.
-# DEFINE: %{grace_period}=5
-# DEFINE: %{hard_timeout}=15
-
-# RUN: not %{lit} %{inputs}/timeout-hang/run-nonexistent.txt \
-# RUN: --timeout=%{hard_timeout} --param external=0 | %{python} %s %{grace_period}
-
-import sys
-import re
-
-grace_time = float(sys.argv[1])
-testing_time = float(re.search(r"Testing Time: (.*)s", sys.stdin.read()).group(1))
-
-if testing_time <= grace_time:
- print("Testing finished within the grace period")
- sys.exit(0)
-else:
- print(
- "Testing took {}s, which is beyond the grace period of {}s".format(
- testing_time, grace_time
- )
- )
- sys.exit(1)
diff --git a/llvm/utils/lit/tests/unique-output-file.py b/llvm/utils/lit/tests/unique-output-file.py
deleted file mode 100644
index fea57682d9fda..0000000000000
--- a/llvm/utils/lit/tests/unique-output-file.py
+++ /dev/null
@@ -1,22 +0,0 @@
-## Check that lit will not overwrite existing result files when given
-## --use-unique-output-file-name.
-
-## Files are overwritten without the option.
-# RUN: rm -f %t.xunit*.xml
-# RUN: echo "test" > %t.xunit.xml
-# RUN: not %{lit} --xunit-xml-output %t.xunit.xml %{inputs}/xunit-output
-# RUN: FileCheck < %t.xunit.xml %s --check-prefix=NEW
-# NEW: <?xml version="1.0" encoding="UTF-8"?>
-# NEW-NEXT: <testsuites time="{{[0-9.]+}}">
-## (other tests will check the contents of the whole file)
-
-# RUN: rm -f %t.xunit*.xml
-# RUN: echo "test" > %t.xunit.xml
-## Files should not be overwritten with the option.
-# RUN: not %{lit} --xunit-xml-output %t.xunit.xml --use-unique-output-file-name %{inputs}/xunit-output
-# RUN: FileCheck < %t.xunit.xml %s --check-prefix=EXISTING
-# EXISTING: test
-## Results in a new file with some discriminator added.
-# RUN: ls -l %t.xunit*.xml | wc -l | FileCheck %s --check-prefix=NUMFILES
-# NUMFILES: 2
-# RUN: FileCheck < %t.xunit.*.xml %s --check-prefix=NEW
diff --git a/llvm/utils/lit/tests/unittest-adaptor.py b/llvm/utils/lit/tests/unittest-adaptor.py
deleted file mode 100644
index ee2eee4572eeb..0000000000000
--- a/llvm/utils/lit/tests/unittest-adaptor.py
+++ /dev/null
@@ -1,17 +0,0 @@
-# Check the lit adaption to run under unittest.
-#
-# RUN: %{python} %s %{inputs}/unittest-adaptor 2> %t.err
-# RUN: FileCheck < %t.err %s
-#
-# CHECK-DAG: unittest-adaptor :: test-two.txt ... FAIL
-# CHECK-DAG: unittest-adaptor :: test-one.txt ... ok
-
-import sys
-import unittest
-
-import lit.LitTestCase
-
-input_path = sys.argv[1]
-unittest_suite = lit.LitTestCase.load_test_suite([input_path])
-runner = unittest.TextTestRunner(verbosity=2)
-runner.run(unittest_suite)
diff --git a/llvm/utils/lit/tests/unparsed-requirements.py b/llvm/utils/lit/tests/unparsed-requirements.py
deleted file mode 100644
index 48cd37f8e65df..0000000000000
--- a/llvm/utils/lit/tests/unparsed-requirements.py
+++ /dev/null
@@ -1,38 +0,0 @@
-# RUN: %{python} %s %{inputs}/unparsed-requirements
-
-import sys
-from lit.Test import Result, Test, TestSuite
-from lit.TestRunner import parseIntegratedTestScript
-from lit.TestingConfig import TestingConfig
-
-config = TestingConfig(
- None,
- "config",
- [".txt"],
- None,
- [],
- [],
- False,
- sys.argv[1],
- sys.argv[1],
- [],
- [],
- True,
-)
-suite = TestSuite("suite", sys.argv[1], sys.argv[1], config)
-
-test = Test(suite, ["test.py"], config)
-test.requires = ["meow"]
-test.unsupported = ["alpha"]
-test.xfails = ["foo"]
-
-parseIntegratedTestScript(test)
-
-error_count = 0
-if test.requires != ["meow", "woof", "quack"]:
- error_count += 1
-if test.unsupported != ["alpha", "beta", "gamma"]:
- error_count += 1
-if test.xfails != ["foo", "bar", "baz"]:
- error_count += 1
-exit(error_count)
diff --git a/llvm/utils/lit/tests/usage.py b/llvm/utils/lit/tests/usage.py
deleted file mode 100644
index 77b3573c53750..0000000000000
--- a/llvm/utils/lit/tests/usage.py
+++ /dev/null
@@ -1,7 +0,0 @@
-# Basic sanity check for `--help` and `--version` options.
-#
-# RUN: %{lit} --help | FileCheck %s --check-prefix=HELP
-# RUN: %{lit} --version 2>&1 | FileCheck %s --check-prefix=VERSION
-#
-# HELP: usage: lit [-h]
-# VERSION: lit {{[0-9]+\.[0-9]+\.[0-9]+[a-zA-Z0-9]*}}
diff --git a/llvm/utils/lit/tests/use-llvm-tool.py b/llvm/utils/lit/tests/use-llvm-tool.py
deleted file mode 100644
index 3e190a3e40f71..0000000000000
--- a/llvm/utils/lit/tests/use-llvm-tool.py
+++ /dev/null
@@ -1,40 +0,0 @@
-## Show that lit reports the path of tools found via use_llvm_tool.
-## Additionally show that use_llvm_tool uses in order of preference:
-## 1) The path specified in an environment variable,
-## 2) The LLVM tools build directory,
-## 3) The PATH, if requested.
-
-# RUN: %{lit} %{inputs}/use-llvm-tool 2>&1 | \
-# RUN: FileCheck %s -DDIR=%p
-
-## The exact breakdown of cases is:
-## Case | Env | Build Dir | PATH |
-## 1 | / | X | N/S | <- Can be found via env
-## 2 | X | / | N/S | <- Can be found via build dir if env specified
-## 3 | N/S | / | N/S | <- Can be found via build dir
-## 4 | N/S | X | / | <- Can be found via PATH, if requested
-## 5 | N/S | X | N/S | <- Cannot be found via PATH, if not requested
-## 6 | / | / | / | <- Env is preferred over build, PATH
-## 7 | N/S | / | / | <- Build dir is preferred over PATH
-## 8 | X | X | X | <- Say nothing if cannot be found if not required
-## 9 | N/S | override | N/S | <- Use specified search directory, instead of default directory
-## 10 | N/S | override | / | <- Use PATH if not in search directory
-
-## Check the exact path reported for the first case, but don't bother for the
-## others.
-# CHECK: note: using case1: [[DIR]]{{[\\/]}}Inputs{{[\\/]}}use-llvm-tool{{[\\/]}}env-case1
-# CHECK-NEXT: note: using case2: {{.*}}build{{[\\/]}}case2
-# CHECK-NEXT: note: using case3: {{.*}}build{{[\\/]}}case3
-# CHECK-NEXT: note: using case4: {{.*}}path{{[\\/]}}case4
-# CHECK-NOT: case5
-# CHECK-NEXT: note: using case6: {{.*}}env-case6
-# CHECK-NEXT: note: using case7: {{.*}}build{{[\\/]}}case7
-# CHECK-NOT: case8
-# CHECK-NEXT: note: using case9: {{.*}}search2{{[\\/]}}case9
-# CHECK-NEXT: note: using case10: {{.*}}path{{[\\/]}}case10
-
-## Test that if required is True, lit errors if the tool is not found.
-# RUN: not %{lit} %{inputs}/use-llvm-tool-required 2>&1 | \
-# RUN: FileCheck %s --check-prefix=ERROR
-# ERROR: note: using found: {{.*}}found
-# ERROR-NEXT: fatal: couldn't find 'not-found' program
diff --git a/llvm/utils/lit/tests/verbosity.py b/llvm/utils/lit/tests/verbosity.py
deleted file mode 100644
index 62baf618e2aca..0000000000000
--- a/llvm/utils/lit/tests/verbosity.py
+++ /dev/null
@@ -1,1130 +0,0 @@
-# Test various combinations of options controlling lit stdout and stderr output
-
-# RUN: mkdir -p %t
-
-### Test default
-
-# RUN: not %{lit} %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS-ERR --implicit-check-not lit < %t/stderr.txt
-
-# NO-ARGS: -- Testing: 5 tests, 1 workers --
-# NO-ARGS-NEXT: FAIL: verbosity :: fail.txt (1 of 5)
-# NO-ARGS-NEXT: PASS: verbosity :: pass.txt (2 of 5)
-# NO-ARGS-NEXT: {{UN}}SUPPORTED: verbosity :: unsupported.txt (3 of 5)
-# NO-ARGS-NEXT: {{X}}FAIL: verbosity :: xfail.txt (4 of 5)
-# NO-ARGS-NEXT: XPASS: verbosity :: xpass.txt (5 of 5)
-# NO-ARGS-NEXT: ********************
-# NO-ARGS-NEXT: Failed Tests (1):
-# NO-ARGS-NEXT: verbosity :: fail.txt
-# NO-ARGS-EMPTY:
-# NO-ARGS-NEXT: ********************
-# NO-ARGS-NEXT: Unexpectedly Passed Tests (1):
-# NO-ARGS-NEXT: verbosity :: xpass.txt
-# NO-ARGS-EMPTY:
-# NO-ARGS-EMPTY:
-# NO-ARGS-NEXT: Testing Time: {{.*}}s
-# NO-ARGS-EMPTY:
-# NO-ARGS-NEXT: Total Discovered Tests: 5
-# NO-ARGS-NEXT: Unsupported : 1 (20.00%)
-# NO-ARGS-NEXT: Passed : 1 (20.00%)
-# NO-ARGS-NEXT: Expectedly Failed : 1 (20.00%)
-# NO-ARGS-NEXT: Failed : 1 (20.00%)
-# NO-ARGS-NEXT: Unexpectedly Passed: 1 (20.00%)
-
-# NO-ARGS-ERR: lit.py: {{.*}}lit.cfg:{{[0-9]+}}: note: this is a note
-# NO-ARGS-ERR-NEXT: lit.py: {{.*}}lit.cfg:{{[0-9]+}}: warning: this is a warning
-# NO-ARGS-ERR-EMPTY:
-# NO-ARGS-ERR-NEXT: 1 warning(s) in tests
-
-
-### Test aliases
-
-# RUN: not %{lit} --succinct %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix SUCCINCT < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS-ERR --implicit-check-not lit < %t/stderr.txt
-
-# SUCCINCT: -- Testing: 5 tests, 1 workers --
-# SUCCINCT-NEXT: Testing:
-# SUCCINCT-NEXT: FAIL: verbosity :: fail.txt (1 of 5)
-# SUCCINCT-NEXT: Testing:
-# SUCCINCT-NEXT: XPASS: verbosity :: xpass.txt (5 of 5)
-# SUCCINCT-NEXT: Testing:
-# SUCCINCT-NEXT: ********************
-# SUCCINCT-NEXT: Failed Tests (1):
-# SUCCINCT-NEXT: verbosity :: fail.txt
-# SUCCINCT-EMPTY:
-# SUCCINCT-NEXT: ********************
-# SUCCINCT-NEXT: Unexpectedly Passed Tests (1):
-# SUCCINCT-NEXT: verbosity :: xpass.txt
-# SUCCINCT-EMPTY:
-# SUCCINCT-EMPTY:
-# SUCCINCT-NEXT: Testing Time: {{.*}}s
-# SUCCINCT-EMPTY:
-# SUCCINCT-NEXT: Total Discovered Tests: 5
-# SUCCINCT-NEXT: Unsupported : 1 (20.00%)
-# SUCCINCT-NEXT: Passed : 1 (20.00%)
-# SUCCINCT-NEXT: Expectedly Failed : 1 (20.00%)
-# SUCCINCT-NEXT: Failed : 1 (20.00%)
-# SUCCINCT-NEXT: Unexpectedly Passed: 1 (20.00%)
-
-# RUN: not %{lit} --verbose %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix VERBOSE < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS-ERR --implicit-check-not lit < %t/stderr.txt
-
-# VERBOSE: -- Testing: 5 tests, 1 workers --
-# VERBOSE-NEXT: FAIL: verbosity :: fail.txt (1 of 5)
-# VERBOSE-NEXT: ******************** TEST 'verbosity :: fail.txt' FAILED ********************
-# VERBOSE-NEXT: Exit Code: 127
-# VERBOSE-EMPTY:
-# VERBOSE-NEXT: Command Output (stdout):
-# VERBOSE-NEXT: --
-# VERBOSE-NEXT: # {{R}}UN: at line 1
-# VERBOSE-NEXT: echo "fail test output"
-# VERBOSE-NEXT: # executed command: echo 'fail test output'
-# VERBOSE-NEXT: # .---command stdout------------
-# VERBOSE-NEXT: # | fail test output
-# VERBOSE-NEXT: # `-----------------------------
-# VERBOSE-NEXT: # {{R}}UN: at line 2
-# VERBOSE-NEXT: fail
-# VERBOSE-NEXT: # executed command: fail
-# VERBOSE-NEXT: # .---command stderr------------
-# VERBOSE-NEXT: # | 'fail': command not found
-# VERBOSE-NEXT: # `-----------------------------
-# VERBOSE-NEXT: # error: command failed with exit status: 127
-# VERBOSE-EMPTY:
-# VERBOSE-NEXT: --
-# VERBOSE-EMPTY:
-# VERBOSE-NEXT: ********************
-# VERBOSE-NEXT: PASS: verbosity :: pass.txt (2 of 5)
-# VERBOSE-NEXT: {{UN}}SUPPORTED: verbosity :: unsupported.txt (3 of 5)
-# VERBOSE-NEXT: {{X}}FAIL: verbosity :: xfail.txt (4 of 5)
-# VERBOSE-NEXT: XPASS: verbosity :: xpass.txt (5 of 5)
-# VERBOSE-NEXT: ******************** TEST 'verbosity :: xpass.txt' FAILED ********************
-# VERBOSE-NEXT: Exit Code: 0
-# VERBOSE-EMPTY:
-# VERBOSE-NEXT: Command Output (stdout):
-# VERBOSE-NEXT: --
-# VERBOSE-NEXT: # {{R}}UN: at line 2
-# VERBOSE-NEXT: echo "xpass test output"
-# VERBOSE-NEXT: # executed command: echo 'xpass test output'
-# VERBOSE-NEXT: # .---command stdout------------
-# VERBOSE-NEXT: # | xpass test output
-# VERBOSE-NEXT: # `-----------------------------
-# VERBOSE-EMPTY:
-# VERBOSE-NEXT: --
-# VERBOSE-EMPTY:
-# VERBOSE-NEXT: ********************
-# VERBOSE-NEXT: ********************
-# VERBOSE-NEXT: Failed Tests (1):
-# VERBOSE-NEXT: verbosity :: fail.txt
-# VERBOSE-EMPTY:
-# VERBOSE-NEXT: ********************
-# VERBOSE-NEXT: Unexpectedly Passed Tests (1):
-# VERBOSE-NEXT: verbosity :: xpass.txt
-# VERBOSE-EMPTY:
-# VERBOSE-EMPTY:
-# VERBOSE-NEXT: Testing Time: {{.*}}s
-# VERBOSE-EMPTY:
-# VERBOSE-NEXT: Total Discovered Tests: 5
-# VERBOSE-NEXT: Unsupported : 1 (20.00%)
-# VERBOSE-NEXT: Passed : 1 (20.00%)
-# VERBOSE-NEXT: Expectedly Failed : 1 (20.00%)
-# VERBOSE-NEXT: Failed : 1 (20.00%)
-# VERBOSE-NEXT: Unexpectedly Passed: 1 (20.00%)
-
-# RUN: not %{lit} --show-all %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix SHOW-ALL < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS-ERR --implicit-check-not lit < %t/stderr.txt
-
-# SHOW-ALL: -- Testing: 5 tests, 1 workers --
-# SHOW-ALL-NEXT: FAIL: verbosity :: fail.txt (1 of 5)
-# SHOW-ALL-NEXT: ******************** TEST 'verbosity :: fail.txt' FAILED ********************
-# SHOW-ALL-NEXT: Exit Code: 127
-# SHOW-ALL-EMPTY:
-# SHOW-ALL-NEXT: Command Output (stdout):
-# SHOW-ALL-NEXT: --
-# SHOW-ALL-NEXT: # {{R}}UN: at line 1
-# SHOW-ALL-NEXT: echo "fail test output"
-# SHOW-ALL-NEXT: # executed command: echo 'fail test output'
-# SHOW-ALL-NEXT: # .---command stdout------------
-# SHOW-ALL-NEXT: # | fail test output
-# SHOW-ALL-NEXT: # `-----------------------------
-# SHOW-ALL-NEXT: # {{R}}UN: at line 2
-# SHOW-ALL-NEXT: fail
-# SHOW-ALL-NEXT: # executed command: fail
-# SHOW-ALL-NEXT: # .---command stderr------------
-# SHOW-ALL-NEXT: # | 'fail': command not found
-# SHOW-ALL-NEXT: # `-----------------------------
-# SHOW-ALL-NEXT: # error: command failed with exit status: 127
-# SHOW-ALL-EMPTY:
-# SHOW-ALL-NEXT: --
-# SHOW-ALL-EMPTY:
-# SHOW-ALL-NEXT: ********************
-# SHOW-ALL-NEXT: PASS: verbosity :: pass.txt (2 of 5)
-# SHOW-ALL-NEXT: Exit Code: 0
-# SHOW-ALL-EMPTY:
-# SHOW-ALL-NEXT: Command Output (stdout):
-# SHOW-ALL-NEXT: --
-# SHOW-ALL-NEXT: # {{R}}UN: at line 1
-# SHOW-ALL-NEXT: echo "pass test output"
-# SHOW-ALL-NEXT: # executed command: echo 'pass test output'
-# SHOW-ALL-NEXT: # .---command stdout------------
-# SHOW-ALL-NEXT: # | pass test output
-# SHOW-ALL-NEXT: # `-----------------------------
-# SHOW-ALL-EMPTY:
-# SHOW-ALL-NEXT: --
-# SHOW-ALL-EMPTY:
-# SHOW-ALL-NEXT: ********************
-# SHOW-ALL-NEXT: {{UN}}SUPPORTED: verbosity :: unsupported.txt (3 of 5)
-# SHOW-ALL-NEXT: Test requires the following unavailable features: asdf
-# SHOW-ALL-NEXT: ********************
-# SHOW-ALL-NEXT: {{X}}FAIL: verbosity :: xfail.txt (4 of 5)
-# SHOW-ALL-NEXT: Exit Code: 1
-# SHOW-ALL-EMPTY:
-# SHOW-ALL-NEXT: Command Output (stdout):
-# SHOW-ALL-NEXT: --
-# SHOW-ALL-NEXT: # {{R}}UN: at line 2
-# SHOW-ALL-NEXT: not echo "xfail test output"
-# SHOW-ALL-NEXT: # executed command: not echo 'xfail test output'
-# SHOW-ALL-NEXT: # .---command stdout------------
-# SHOW-ALL-NEXT: # | xfail test output
-# SHOW-ALL-NEXT: # `-----------------------------
-# SHOW-ALL-NEXT: # error: command failed with exit status: 1
-# SHOW-ALL-EMPTY:
-# SHOW-ALL-NEXT: --
-# SHOW-ALL-EMPTY:
-# SHOW-ALL-NEXT: ********************
-# SHOW-ALL-NEXT: XPASS: verbosity :: xpass.txt (5 of 5)
-# SHOW-ALL-NEXT: ******************** TEST 'verbosity :: xpass.txt' FAILED ********************
-# SHOW-ALL-NEXT: Exit Code: 0
-# SHOW-ALL-EMPTY:
-# SHOW-ALL-NEXT: Command Output (stdout):
-# SHOW-ALL-NEXT: --
-# SHOW-ALL-NEXT: # {{R}}UN: at line 2
-# SHOW-ALL-NEXT: echo "xpass test output"
-# SHOW-ALL-NEXT: # executed command: echo 'xpass test output'
-# SHOW-ALL-NEXT: # .---command stdout------------
-# SHOW-ALL-NEXT: # | xpass test output
-# SHOW-ALL-NEXT: # `-----------------------------
-# SHOW-ALL-EMPTY:
-# SHOW-ALL-NEXT: --
-# SHOW-ALL-EMPTY:
-# SHOW-ALL-NEXT: ********************
-# SHOW-ALL-NEXT: ********************
-# SHOW-ALL-NEXT: Failed Tests (1):
-# SHOW-ALL-NEXT: verbosity :: fail.txt
-# SHOW-ALL-EMPTY:
-# SHOW-ALL-NEXT: ********************
-# SHOW-ALL-NEXT: Unexpectedly Passed Tests (1):
-# SHOW-ALL-NEXT: verbosity :: xpass.txt
-# SHOW-ALL-EMPTY:
-# SHOW-ALL-EMPTY:
-# SHOW-ALL-NEXT: Testing Time: {{.*}}s
-# SHOW-ALL-EMPTY:
-# SHOW-ALL-NEXT: Total Discovered Tests: 5
-# SHOW-ALL-NEXT: Unsupported : 1 (20.00%)
-# SHOW-ALL-NEXT: Passed : 1 (20.00%)
-# SHOW-ALL-NEXT: Expectedly Failed : 1 (20.00%)
-# SHOW-ALL-NEXT: Failed : 1 (20.00%)
-# SHOW-ALL-NEXT: Unexpectedly Passed: 1 (20.00%)
-
-# RUN: not %{lit} --quiet %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix QUIET < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix QUIET-ERR --implicit-check-not lit < %t/stderr.txt
-
-# QUIET: -- Testing: 5 tests, 1 workers --
-# QUIET-NEXT: FAIL: verbosity :: fail.txt (1 of 5)
-# QUIET-NEXT: XPASS: verbosity :: xpass.txt (5 of 5)
-# QUIET-NEXT: ********************
-# QUIET-NEXT: Failed Tests (1):
-# QUIET-NEXT: verbosity :: fail.txt
-# QUIET-EMPTY:
-# QUIET-NEXT: ********************
-# QUIET-NEXT: Unexpectedly Passed Tests (1):
-# QUIET-NEXT: verbosity :: xpass.txt
-# QUIET-EMPTY:
-# QUIET-EMPTY:
-# QUIET-NEXT: Total Discovered Tests: 5
-# QUIET-NEXT: Failed : 1 (20.00%)
-# QUIET-NEXT: Unexpectedly Passed: 1 (20.00%)
-
-# QUIET-ERR: 1 warning(s) in tests
-
-
-### Test log output
-
-# RUN: not %{lit} --debug %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix DEBUG < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix DEBUG-ERR --implicit-check-not lit < %t/stderr.txt
-
-# DEBUG: -- Testing: 5 tests, 1 workers --
-# DEBUG-NEXT: FAIL: verbosity :: fail.txt (1 of 5)
-# DEBUG-NEXT: PASS: verbosity :: pass.txt (2 of 5)
-# DEBUG-NEXT: {{UN}}SUPPORTED: verbosity :: unsupported.txt (3 of 5)
-# DEBUG-NEXT: {{X}}FAIL: verbosity :: xfail.txt (4 of 5)
-# DEBUG-NEXT: XPASS: verbosity :: xpass.txt (5 of 5)
-# DEBUG-NEXT: ********************
-# DEBUG-NEXT: Failed Tests (1):
-# DEBUG-NEXT: verbosity :: fail.txt
-# DEBUG-EMPTY:
-# DEBUG-NEXT: ********************
-# DEBUG-NEXT: Unexpectedly Passed Tests (1):
-# DEBUG-NEXT: verbosity :: xpass.txt
-# DEBUG-EMPTY:
-# DEBUG-EMPTY:
-# DEBUG-NEXT: Testing Time: {{.*}}s
-# DEBUG-EMPTY:
-# DEBUG-NEXT: Total Discovered Tests: 5
-# DEBUG-NEXT: Unsupported : 1 (20.00%)
-# DEBUG-NEXT: Passed : 1 (20.00%)
-# DEBUG-NEXT: Expectedly Failed : 1 (20.00%)
-# DEBUG-NEXT: Failed : 1 (20.00%)
-# DEBUG-NEXT: Unexpectedly Passed: 1 (20.00%)
-
-# DEBUG-ERR: lit.py: {{.*}}discovery.py:{{[0-9]+}}: debug: loading suite config '{{.*}}lit.cfg'
-# DEBUG-ERR-NEXT: lit.py: {{.*}}lit.cfg:{{[0-9]+}}: debug: this is a debug log
-# DEBUG-ERR-NEXT: lit.py: {{.*}}lit.cfg:{{[0-9]+}}: note: this is a note
-# DEBUG-ERR-NEXT: lit.py: {{.*}}lit.cfg:{{[0-9]+}}: warning: this is a warning
-# DEBUG-ERR-NEXT: lit.py: {{.*}}TestingConfig.py:{{[0-9]+}}: debug: ... loaded config '{{.*}}lit.cfg'
-# DEBUG-ERR-NEXT: lit.py: {{.*}}discovery.py:{{[0-9]+}}: debug: resolved input '{{.*}}verbosity' to 'verbosity'::()
-# DEBUG-ERR-EMPTY:
-# DEBUG-ERR-NEXT: 1 warning(s) in tests
-
-
-# RUN: not %{lit} --diagnostic-level note %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS-ERR --implicit-check-not lit < %t/stderr.txt
-
-# RUN: not %{lit} --diagnostic-level warning %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix WARNING-ERR --implicit-check-not lit < %t/stderr.txt
-
-# WARNING-ERR: lit.py: {{.*}}lit.cfg:{{[0-9]+}}: warning: this is a warning
-# WARNING-ERR-EMPTY:
-# WARNING-ERR-NEXT: 1 warning(s) in tests
-
-# RUN: not %{lit} --diagnostic-level error %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix ERROR-ERR --implicit-check-not lit < %t/stderr.txt
-
-# ERROR-ERR: 1 warning(s) in tests
-
-
-### Test --test-output
-
-# RUN: not %{lit} --test-output off %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS-ERR --implicit-check-not lit < %t/stderr.txt
-
-# RUN: not %{lit} --test-output failed %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix VERBOSE < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS-ERR --implicit-check-not lit < %t/stderr.txt
-
-# TEST-OUTPUT-OFF: -- Testing: 5 tests, 1 workers --
-# TEST-OUTPUT-OFF-NEXT: FAIL: verbosity :: fail.txt (1 of 5)
-# TEST-OUTPUT-OFF-NEXT: PASS: verbosity :: pass.txt (2 of 5)
-# TEST-OUTPUT-OFF-NEXT: {{UN}}SUPPORTED: verbosity :: unsupported.txt (3 of 5)
-# TEST-OUTPUT-OFF-NEXT: {{X}}FAIL: verbosity :: xfail.txt (4 of 5)
-# TEST-OUTPUT-OFF-NEXT: XPASS: verbosity :: xpass.txt (5 of 5)
-# TEST-OUTPUT-OFF-NEXT: ********************
-# TEST-OUTPUT-OFF-NEXT: Failed Tests (1):
-# TEST-OUTPUT-OFF-NEXT: verbosity :: fail.txt
-# TEST-OUTPUT-OFF-EMPTY:
-# TEST-OUTPUT-OFF-NEXT: ********************
-# TEST-OUTPUT-OFF-NEXT: Unexpectedly Passed Tests (1):
-# TEST-OUTPUT-OFF-NEXT: verbosity :: xpass.txt
-# TEST-OUTPUT-OFF-EMPTY:
-# TEST-OUTPUT-OFF-EMPTY:
-# TEST-OUTPUT-OFF-NEXT: Testing Time: {{.*}}s
-# TEST-OUTPUT-OFF-EMPTY:
-# TEST-OUTPUT-OFF-NEXT: Total Discovered Tests: 5
-# TEST-OUTPUT-OFF-NEXT: Unsupported : 1 (20.00%)
-# TEST-OUTPUT-OFF-NEXT: Passed : 1 (20.00%)
-# TEST-OUTPUT-OFF-NEXT: Expectedly Failed : 1 (20.00%)
-# TEST-OUTPUT-OFF-NEXT: Failed : 1 (20.00%)
-# TEST-OUTPUT-OFF-NEXT: Unexpectedly Passed: 1 (20.00%)
-
-# RUN: not %{lit} --test-output all %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix SHOW-ALL < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS-ERR --implicit-check-not lit < %t/stderr.txt
-
-
-### Test --print-result-after
-
-# RUN: not %{lit} --print-result-after off %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix RESULT-OFF < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS-ERR --implicit-check-not lit < %t/stderr.txt
-
-# RESULT-OFF: ********************
-# RESULT-OFF-NEXT: Failed Tests (1):
-# RESULT-OFF-NEXT: verbosity :: fail.txt
-# RESULT-OFF-EMPTY:
-# RESULT-OFF-NEXT: ********************
-# RESULT-OFF-NEXT: Unexpectedly Passed Tests (1):
-# RESULT-OFF-NEXT: verbosity :: xpass.txt
-# RESULT-OFF-EMPTY:
-# RESULT-OFF-EMPTY:
-# RESULT-OFF-NEXT: Testing Time: {{.*}}s
-# RESULT-OFF-EMPTY:
-# RESULT-OFF-NEXT: Total Discovered Tests: 5
-# RESULT-OFF-NEXT: Unsupported : 1 (20.00%)
-# RESULT-OFF-NEXT: Passed : 1 (20.00%)
-# RESULT-OFF-NEXT: Expectedly Failed : 1 (20.00%)
-# RESULT-OFF-NEXT: Failed : 1 (20.00%)
-# RESULT-OFF-NEXT: Unexpectedly Passed: 1 (20.00%)
-
-
-# RUN: not %{lit} --print-result-after failed %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix RESULT-FAILED < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS-ERR --implicit-check-not lit < %t/stderr.txt
-
-# RESULT-FAILED: -- Testing: 5 tests, 1 workers --
-# RESULT-FAILED-NEXT: FAIL: verbosity :: fail.txt (1 of 5)
-# RESULT-FAILED-NEXT: XPASS: verbosity :: xpass.txt (5 of 5)
-# RESULT-FAILED-NEXT: ********************
-# RESULT-FAILED-NEXT: Failed Tests (1):
-# RESULT-FAILED-NEXT: verbosity :: fail.txt
-# RESULT-FAILED-EMPTY:
-# RESULT-FAILED-NEXT: ********************
-# RESULT-FAILED-NEXT: Unexpectedly Passed Tests (1):
-# RESULT-FAILED-NEXT: verbosity :: xpass.txt
-# RESULT-FAILED-EMPTY:
-# RESULT-FAILED-EMPTY:
-# RESULT-FAILED-NEXT: Testing Time: {{.*}}s
-# RESULT-FAILED-EMPTY:
-# RESULT-FAILED-NEXT: Total Discovered Tests: 5
-# RESULT-FAILED-NEXT: Unsupported : 1 (20.00%)
-# RESULT-FAILED-NEXT: Passed : 1 (20.00%)
-# RESULT-FAILED-NEXT: Expectedly Failed : 1 (20.00%)
-# RESULT-FAILED-NEXT: Failed : 1 (20.00%)
-# RESULT-FAILED-NEXT: Unexpectedly Passed: 1 (20.00%)
-
-
-# RUN: not %{lit} --print-result-after all %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS-ERR --implicit-check-not lit < %t/stderr.txt
-
-
-### Test combinations of --print-result-after followed by --test-output
-
-# RUN: not %{lit} --print-result-after off --test-output failed %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix RESULT-OFF-OUTPUT-FAILED < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS-ERR --implicit-check-not lit < %t/stderr.txt
-
-# RESULT-OFF-OUTPUT-FAILED: -- Testing: 5 tests, 1 workers --
-# RESULT-OFF-OUTPUT-FAILED-NEXT: FAIL: verbosity :: fail.txt (1 of 5)
-# RESULT-OFF-OUTPUT-FAILED-NEXT: ******************** TEST 'verbosity :: fail.txt' FAILED ********************
-# RESULT-OFF-OUTPUT-FAILED-NEXT: Exit Code: 127
-# RESULT-OFF-OUTPUT-FAILED-EMPTY:
-# RESULT-OFF-OUTPUT-FAILED-NEXT: Command Output (stdout):
-# RESULT-OFF-OUTPUT-FAILED-NEXT: --
-# RESULT-OFF-OUTPUT-FAILED-NEXT: # {{R}}UN: at line 1
-# RESULT-OFF-OUTPUT-FAILED-NEXT: echo "fail test output"
-# RESULT-OFF-OUTPUT-FAILED-NEXT: # executed command: echo 'fail test output'
-# RESULT-OFF-OUTPUT-FAILED-NEXT: # .---command stdout------------
-# RESULT-OFF-OUTPUT-FAILED-NEXT: # | fail test output
-# RESULT-OFF-OUTPUT-FAILED-NEXT: # `-----------------------------
-# RESULT-OFF-OUTPUT-FAILED-NEXT: # {{R}}UN: at line 2
-# RESULT-OFF-OUTPUT-FAILED-NEXT: fail
-# RESULT-OFF-OUTPUT-FAILED-NEXT: # executed command: fail
-# RESULT-OFF-OUTPUT-FAILED-NEXT: # .---command stderr------------
-# RESULT-OFF-OUTPUT-FAILED-NEXT: # | 'fail': command not found
-# RESULT-OFF-OUTPUT-FAILED-NEXT: # `-----------------------------
-# RESULT-OFF-OUTPUT-FAILED-NEXT: # error: command failed with exit status: 127
-# RESULT-OFF-OUTPUT-FAILED-EMPTY:
-# RESULT-OFF-OUTPUT-FAILED-NEXT: --
-# RESULT-OFF-OUTPUT-FAILED-EMPTY:
-# RESULT-OFF-OUTPUT-FAILED-NEXT: ********************
-# RESULT-OFF-OUTPUT-FAILED-NEXT: XPASS: verbosity :: xpass.txt (5 of 5)
-# RESULT-OFF-OUTPUT-FAILED-NEXT: ******************** TEST 'verbosity :: xpass.txt' FAILED ********************
-# RESULT-OFF-OUTPUT-FAILED-NEXT: Exit Code: 0
-# RESULT-OFF-OUTPUT-FAILED-EMPTY:
-# RESULT-OFF-OUTPUT-FAILED-NEXT: Command Output (stdout):
-# RESULT-OFF-OUTPUT-FAILED-NEXT: --
-# RESULT-OFF-OUTPUT-FAILED-NEXT: # {{R}}UN: at line 2
-# RESULT-OFF-OUTPUT-FAILED-NEXT: echo "xpass test output"
-# RESULT-OFF-OUTPUT-FAILED-NEXT: # executed command: echo 'xpass test output'
-# RESULT-OFF-OUTPUT-FAILED-NEXT: # .---command stdout------------
-# RESULT-OFF-OUTPUT-FAILED-NEXT: # | xpass test output
-# RESULT-OFF-OUTPUT-FAILED-NEXT: # `-----------------------------
-# RESULT-OFF-OUTPUT-FAILED-EMPTY:
-# RESULT-OFF-OUTPUT-FAILED-NEXT: --
-# RESULT-OFF-OUTPUT-FAILED-EMPTY:
-# RESULT-OFF-OUTPUT-FAILED-NEXT: ********************
-# RESULT-OFF-OUTPUT-FAILED-NEXT: ********************
-# RESULT-OFF-OUTPUT-FAILED-NEXT: Failed Tests (1):
-# RESULT-OFF-OUTPUT-FAILED-NEXT: verbosity :: fail.txt
-# RESULT-OFF-OUTPUT-FAILED-EMPTY:
-# RESULT-OFF-OUTPUT-FAILED-NEXT: ********************
-# RESULT-OFF-OUTPUT-FAILED-NEXT: Unexpectedly Passed Tests (1):
-# RESULT-OFF-OUTPUT-FAILED-NEXT: verbosity :: xpass.txt
-# RESULT-OFF-OUTPUT-FAILED-EMPTY:
-# RESULT-OFF-OUTPUT-FAILED-EMPTY:
-# RESULT-OFF-OUTPUT-FAILED-NEXT: Testing Time: {{.*}}s
-# RESULT-OFF-OUTPUT-FAILED-EMPTY:
-# RESULT-OFF-OUTPUT-FAILED-NEXT: Total Discovered Tests: 5
-# RESULT-OFF-OUTPUT-FAILED-NEXT: Unsupported : 1 (20.00%)
-# RESULT-OFF-OUTPUT-FAILED-NEXT: Passed : 1 (20.00%)
-# RESULT-OFF-OUTPUT-FAILED-NEXT: Expectedly Failed : 1 (20.00%)
-# RESULT-OFF-OUTPUT-FAILED-NEXT: Failed : 1 (20.00%)
-# RESULT-OFF-OUTPUT-FAILED-NEXT: Unexpectedly Passed: 1 (20.00%)
-
-# RUN: not %{lit} --print-result-after all --test-output off %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS-ERR --implicit-check-not lit < %t/stderr.txt
-
-# RUN: not %{lit} --print-result-after failed --test-output all %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix SHOW-ALL < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS-ERR --implicit-check-not lit < %t/stderr.txt
-
-
-### Test combinations of --test-output followed by --print-result-after
-
-# RUN: not %{lit} --test-output failed --print-result-after off %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix RESULT-OFF < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS-ERR --implicit-check-not lit < %t/stderr.txt
-
-# RUN: not %{lit} --test-output off --print-result-after all %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS-ERR --implicit-check-not lit < %t/stderr.txt
-
-# RUN: not %{lit} --test-output all --print-result-after failed %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix OUTPUT-ALL-RESULT-FAILED < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS-ERR --implicit-check-not lit < %t/stderr.txt
-
-# OUTPUT-ALL-RESULT-FAILED: -- Testing: 5 tests, 1 workers --
-# OUTPUT-ALL-RESULT-FAILED-NEXT: FAIL: verbosity :: fail.txt (1 of 5)
-# OUTPUT-ALL-RESULT-FAILED-NEXT: ******************** TEST 'verbosity :: fail.txt' FAILED ********************
-# OUTPUT-ALL-RESULT-FAILED-NEXT: Exit Code: 127
-# OUTPUT-ALL-RESULT-FAILED-EMPTY:
-# OUTPUT-ALL-RESULT-FAILED-NEXT: Command Output (stdout):
-# OUTPUT-ALL-RESULT-FAILED-NEXT: --
-# OUTPUT-ALL-RESULT-FAILED-NEXT: # {{R}}UN: at line 1
-# OUTPUT-ALL-RESULT-FAILED-NEXT: echo "fail test output"
-# OUTPUT-ALL-RESULT-FAILED-NEXT: # executed command: echo 'fail test output'
-# OUTPUT-ALL-RESULT-FAILED-NEXT: # .---command stdout------------
-# OUTPUT-ALL-RESULT-FAILED-NEXT: # | fail test output
-# OUTPUT-ALL-RESULT-FAILED-NEXT: # `-----------------------------
-# OUTPUT-ALL-RESULT-FAILED-NEXT: # {{R}}UN: at line 2
-# OUTPUT-ALL-RESULT-FAILED-NEXT: fail
-# OUTPUT-ALL-RESULT-FAILED-NEXT: # executed command: fail
-# OUTPUT-ALL-RESULT-FAILED-NEXT: # .---command stderr------------
-# OUTPUT-ALL-RESULT-FAILED-NEXT: # | 'fail': command not found
-# OUTPUT-ALL-RESULT-FAILED-NEXT: # `-----------------------------
-# OUTPUT-ALL-RESULT-FAILED-NEXT: # error: command failed with exit status: 127
-# OUTPUT-ALL-RESULT-FAILED-EMPTY:
-# OUTPUT-ALL-RESULT-FAILED-NEXT: --
-# OUTPUT-ALL-RESULT-FAILED-EMPTY:
-# OUTPUT-ALL-RESULT-FAILED-NEXT: ********************
-# OUTPUT-ALL-RESULT-FAILED-NEXT: XPASS: verbosity :: xpass.txt (5 of 5)
-# OUTPUT-ALL-RESULT-FAILED-NEXT: ******************** TEST 'verbosity :: xpass.txt' FAILED ********************
-# OUTPUT-ALL-RESULT-FAILED-NEXT: Exit Code: 0
-# OUTPUT-ALL-RESULT-FAILED-EMPTY:
-# OUTPUT-ALL-RESULT-FAILED-NEXT: Command Output (stdout):
-# OUTPUT-ALL-RESULT-FAILED-NEXT: --
-# OUTPUT-ALL-RESULT-FAILED-NEXT: # {{R}}UN: at line 2
-# OUTPUT-ALL-RESULT-FAILED-NEXT: echo "xpass test output"
-# OUTPUT-ALL-RESULT-FAILED-NEXT: # executed command: echo 'xpass test output'
-# OUTPUT-ALL-RESULT-FAILED-NEXT: # .---command stdout------------
-# OUTPUT-ALL-RESULT-FAILED-NEXT: # | xpass test output
-# OUTPUT-ALL-RESULT-FAILED-NEXT: # `-----------------------------
-# OUTPUT-ALL-RESULT-FAILED-EMPTY:
-# OUTPUT-ALL-RESULT-FAILED-NEXT: --
-# OUTPUT-ALL-RESULT-FAILED-EMPTY:
-# OUTPUT-ALL-RESULT-FAILED-NEXT: ********************
-# OUTPUT-ALL-RESULT-FAILED-NEXT: ********************
-# OUTPUT-ALL-RESULT-FAILED-NEXT: Failed Tests (1):
-# OUTPUT-ALL-RESULT-FAILED-NEXT: verbosity :: fail.txt
-# OUTPUT-ALL-RESULT-FAILED-EMPTY:
-# OUTPUT-ALL-RESULT-FAILED-NEXT: ********************
-# OUTPUT-ALL-RESULT-FAILED-NEXT: Unexpectedly Passed Tests (1):
-# OUTPUT-ALL-RESULT-FAILED-NEXT: verbosity :: xpass.txt
-# OUTPUT-ALL-RESULT-FAILED-EMPTY:
-# OUTPUT-ALL-RESULT-FAILED-EMPTY:
-# OUTPUT-ALL-RESULT-FAILED-NEXT: Testing Time: {{.*}}
-# OUTPUT-ALL-RESULT-FAILED-EMPTY:
-# OUTPUT-ALL-RESULT-FAILED-NEXT: Total Discovered Tests: 5
-# OUTPUT-ALL-RESULT-FAILED-NEXT: Unsupported : 1 (20.00%)
-# OUTPUT-ALL-RESULT-FAILED-NEXT: Passed : 1 (20.00%)
-# OUTPUT-ALL-RESULT-FAILED-NEXT: Expectedly Failed : 1 (20.00%)
-# OUTPUT-ALL-RESULT-FAILED-NEXT: Failed : 1 (20.00%)
-# OUTPUT-ALL-RESULT-FAILED-NEXT: Unexpectedly Passed: 1 (20.00%)
-
-
-### Test progress bar and terse summary in isolation
-
-# RUN: not %{lit} --progress-bar %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix PROGRESS < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS-ERR --implicit-check-not lit < %t/stderr.txt
-
-# PROGRESS: -- Testing: 5 tests, 1 workers --
-# PROGRESS-NEXT: Testing:
-# PROGRESS-NEXT: FAIL: verbosity :: fail.txt (1 of 5)
-# PROGRESS-NEXT: Testing:
-# PROGRESS-NEXT: PASS: verbosity :: pass.txt (2 of 5)
-# PROGRESS-NEXT: Testing:
-# PROGRESS-NEXT: {{UN}}SUPPORTED: verbosity :: unsupported.txt (3 of 5)
-# PROGRESS-NEXT: Testing:
-# PROGRESS-NEXT: {{X}}FAIL: verbosity :: xfail.txt (4 of 5)
-# PROGRESS-NEXT: Testing:
-# PROGRESS-NEXT: XPASS: verbosity :: xpass.txt (5 of 5)
-# PROGRESS-NEXT: Testing:
-# PROGRESS-NEXT: ********************
-# PROGRESS-NEXT: Failed Tests (1):
-# PROGRESS-NEXT: verbosity :: fail.txt
-# PROGRESS-EMPTY:
-# PROGRESS-NEXT: ********************
-# PROGRESS-NEXT: Unexpectedly Passed Tests (1):
-# PROGRESS-NEXT: verbosity :: xpass.txt
-# PROGRESS-EMPTY:
-# PROGRESS-EMPTY:
-# PROGRESS-NEXT: Testing Time: {{.*}}s
-# PROGRESS-EMPTY:
-# PROGRESS-NEXT: Total Discovered Tests: 5
-# PROGRESS-NEXT: Unsupported : 1 (20.00%)
-# PROGRESS-NEXT: Passed : 1 (20.00%)
-# PROGRESS-NEXT: Expectedly Failed : 1 (20.00%)
-# PROGRESS-NEXT: Failed : 1 (20.00%)
-# PROGRESS-NEXT: Unexpectedly Passed: 1 (20.00%)
-
-# RUN: not %{lit} --terse-summary %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix TERSE < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS-ERR --implicit-check-not lit < %t/stderr.txt
-
-# TERSE: -- Testing: 5 tests, 1 workers --
-# TERSE-NEXT: FAIL: verbosity :: fail.txt (1 of 5)
-# TERSE-NEXT: PASS: verbosity :: pass.txt (2 of 5)
-# TERSE-NEXT: {{UN}}SUPPORTED: verbosity :: unsupported.txt (3 of 5)
-# TERSE-NEXT: {{X}}FAIL: verbosity :: xfail.txt (4 of 5)
-# TERSE-NEXT: XPASS: verbosity :: xpass.txt (5 of 5)
-# TERSE-NEXT: ********************
-# TERSE-NEXT: Failed Tests (1):
-# TERSE-NEXT: verbosity :: fail.txt
-# TERSE-EMPTY:
-# TERSE-NEXT: ********************
-# TERSE-NEXT: Unexpectedly Passed Tests (1):
-# TERSE-NEXT: verbosity :: xpass.txt
-# TERSE-EMPTY:
-# TERSE-EMPTY:
-# TERSE-NEXT: Total Discovered Tests: 5
-# TERSE-NEXT: Failed : 1 (20.00%)
-# TERSE-NEXT: Unexpectedly Passed: 1 (20.00%)
-
-
-### Aliases in combination
-
-# RUN: not %{lit} -a -s %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix AS < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS-ERR --implicit-check-not lit < %t/stderr.txt
-
-# AS: -- Testing: 5 tests, 1 workers --
-# AS-NEXT: Testing:
-# AS-NEXT: FAIL: verbosity :: fail.txt (1 of 5)
-# AS-NEXT: ******************** TEST 'verbosity :: fail.txt' FAILED ********************
-# AS-NEXT: Exit Code: 127
-# AS-EMPTY:
-# AS-NEXT: Command Output (stdout):
-# AS-NEXT: --
-# AS-NEXT: # {{R}}UN: at line 1
-# AS-NEXT: echo "fail test output"
-# AS-NEXT: # executed command: echo 'fail test output'
-# AS-NEXT: # .---command stdout------------
-# AS-NEXT: # | fail test output
-# AS-NEXT: # `-----------------------------
-# AS-NEXT: # {{R}}UN: at line 2
-# AS-NEXT: fail
-# AS-NEXT: # executed command: fail
-# AS-NEXT: # .---command stderr------------
-# AS-NEXT: # | 'fail': command not found
-# AS-NEXT: # `-----------------------------
-# AS-NEXT: # error: command failed with exit status: 127
-# AS-EMPTY:
-# AS-NEXT: --
-# AS-EMPTY:
-# AS-NEXT: ********************
-# AS-NEXT: Testing:
-# AS-NEXT: XPASS: verbosity :: xpass.txt (5 of 5)
-# AS-NEXT: ******************** TEST 'verbosity :: xpass.txt' FAILED ********************
-# AS-NEXT: Exit Code: 0
-# AS-EMPTY:
-# AS-NEXT: Command Output (stdout):
-# AS-NEXT: --
-# AS-NEXT: # {{R}}UN: at line 2
-# AS-NEXT: echo "xpass test output"
-# AS-NEXT: # executed command: echo 'xpass test output'
-# AS-NEXT: # .---command stdout------------
-# AS-NEXT: # | xpass test output
-# AS-NEXT: # `-----------------------------
-# AS-EMPTY:
-# AS-NEXT: --
-# AS-EMPTY:
-# AS-NEXT: ********************
-# AS-NEXT: Testing:
-# AS-NEXT: ********************
-# AS-NEXT: Failed Tests (1):
-# AS-NEXT: verbosity :: fail.txt
-# AS-EMPTY:
-# AS-NEXT: ********************
-# AS-NEXT: Unexpectedly Passed Tests (1):
-# AS-NEXT: verbosity :: xpass.txt
-# AS-EMPTY:
-# AS-EMPTY:
-# AS-NEXT: Testing Time: {{.*}}s
-# AS-EMPTY:
-# AS-NEXT: Total Discovered Tests: 5
-# AS-NEXT: Unsupported : 1 (20.00%)
-# AS-NEXT: Passed : 1 (20.00%)
-# AS-NEXT: Expectedly Failed : 1 (20.00%)
-# AS-NEXT: Failed : 1 (20.00%)
-# AS-NEXT: Unexpectedly Passed: 1 (20.00%)
-
-
-# RUN: not %{lit} -s -a %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix SA < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS-ERR --implicit-check-not lit < %t/stderr.txt
-
-# SA: -- Testing: 5 tests, 1 workers --
-# SA-NEXT: Testing:
-# SA-NEXT: FAIL: verbosity :: fail.txt (1 of 5)
-# SA-NEXT: ******************** TEST 'verbosity :: fail.txt' FAILED ********************
-# SA-NEXT: Exit Code: 127
-# SA-EMPTY:
-# SA-NEXT: Command Output (stdout):
-# SA-NEXT: --
-# SA-NEXT: # {{R}}UN: at line 1
-# SA-NEXT: echo "fail test output"
-# SA-NEXT: # executed command: echo 'fail test output'
-# SA-NEXT: # .---command stdout------------
-# SA-NEXT: # | fail test output
-# SA-NEXT: # `-----------------------------
-# SA-NEXT: # {{R}}UN: at line 2
-# SA-NEXT: fail
-# SA-NEXT: # executed command: fail
-# SA-NEXT: # .---command stderr------------
-# SA-NEXT: # | 'fail': command not found
-# SA-NEXT: # `-----------------------------
-# SA-NEXT: # error: command failed with exit status: 127
-# SA-EMPTY:
-# SA-NEXT: --
-# SA-EMPTY:
-# SA-NEXT: ********************
-# SA-NEXT: Testing:
-# SA-NEXT: PASS: verbosity :: pass.txt (2 of 5)
-# SA-NEXT: Exit Code: 0
-# SA-EMPTY:
-# SA-NEXT: Command Output (stdout):
-# SA-NEXT: --
-# SA-NEXT: # {{R}}UN: at line 1
-# SA-NEXT: echo "pass test output"
-# SA-NEXT: # executed command: echo 'pass test output'
-# SA-NEXT: # .---command stdout------------
-# SA-NEXT: # | pass test output
-# SA-NEXT: # `-----------------------------
-# SA-EMPTY:
-# SA-NEXT: --
-# SA-EMPTY:
-# SA-NEXT: ********************
-# SA-NEXT: Testing:
-# SA-NEXT: {{UN}}SUPPORTED: verbosity :: unsupported.txt (3 of 5)
-# SA-NEXT: Test requires the following unavailable features: asdf
-# SA-NEXT: ********************
-# SA-NEXT: Testing:
-# SA-NEXT: {{X}}FAIL: verbosity :: xfail.txt (4 of 5)
-# SA-NEXT: Exit Code: 1
-# SA-EMPTY:
-# SA-NEXT: Command Output (stdout):
-# SA-NEXT: --
-# SA-NEXT: # {{R}}UN: at line 2
-# SA-NEXT: not echo "xfail test output"
-# SA-NEXT: # executed command: not echo 'xfail test output'
-# SA-NEXT: # .---command stdout------------
-# SA-NEXT: # | xfail test output
-# SA-NEXT: # `-----------------------------
-# SA-NEXT: # error: command failed with exit status: 1
-# SA-EMPTY:
-# SA-NEXT: --
-# SA-EMPTY:
-# SA-NEXT: ********************
-# SA-NEXT: Testing:
-# SA-NEXT: XPASS: verbosity :: xpass.txt (5 of 5)
-# SA-NEXT: ******************** TEST 'verbosity :: xpass.txt' FAILED ********************
-# SA-NEXT: Exit Code: 0
-# SA-EMPTY:
-# SA-NEXT: Command Output (stdout):
-# SA-NEXT: --
-# SA-NEXT: # {{R}}UN: at line 2
-# SA-NEXT: echo "xpass test output"
-# SA-NEXT: # executed command: echo 'xpass test output'
-# SA-NEXT: # .---command stdout------------
-# SA-NEXT: # | xpass test output
-# SA-NEXT: # `-----------------------------
-# SA-EMPTY:
-# SA-NEXT: --
-# SA-EMPTY:
-# SA-NEXT: ********************
-# SA-NEXT: Testing:
-# SA-NEXT: ********************
-# SA-NEXT: Failed Tests (1):
-# SA-NEXT: verbosity :: fail.txt
-# SA-EMPTY:
-# SA-NEXT: ********************
-# SA-NEXT: Unexpectedly Passed Tests (1):
-# SA-NEXT: verbosity :: xpass.txt
-# SA-EMPTY:
-# SA-EMPTY:
-# SA-NEXT: Testing Time: {{.*}}s
-# SA-EMPTY:
-# SA-NEXT: Total Discovered Tests: 5
-# SA-NEXT: Unsupported : 1 (20.00%)
-# SA-NEXT: Passed : 1 (20.00%)
-# SA-NEXT: Expectedly Failed : 1 (20.00%)
-# SA-NEXT: Failed : 1 (20.00%)
-# SA-NEXT: Unexpectedly Passed: 1 (20.00%)
-
-
-# RUN: not %{lit} -q -a %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix QA < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix QUIET-ERR --implicit-check-not lit < %t/stderr.txt
-
-# QA: -- Testing: 5 tests, 1 workers --
-# QA-NEXT: FAIL: verbosity :: fail.txt (1 of 5)
-# QA-NEXT: ******************** TEST 'verbosity :: fail.txt' FAILED ********************
-# QA-NEXT: Exit Code: 127
-# QA-EMPTY:
-# QA-NEXT: Command Output (stdout):
-# QA-NEXT: --
-# QA-NEXT: # {{R}}UN: at line 1
-# QA-NEXT: echo "fail test output"
-# QA-NEXT: # executed command: echo 'fail test output'
-# QA-NEXT: # .---command stdout------------
-# QA-NEXT: # | fail test output
-# QA-NEXT: # `-----------------------------
-# QA-NEXT: # {{R}}UN: at line 2
-# QA-NEXT: fail
-# QA-NEXT: # executed command: fail
-# QA-NEXT: # .---command stderr------------
-# QA-NEXT: # | 'fail': command not found
-# QA-NEXT: # `-----------------------------
-# QA-NEXT: # error: command failed with exit status: 127
-# QA-EMPTY:
-# QA-NEXT: --
-# QA-EMPTY:
-# QA-NEXT: ********************
-# QA-NEXT: PASS: verbosity :: pass.txt (2 of 5)
-# QA-NEXT: Exit Code: 0
-# QA-EMPTY:
-# QA-NEXT: Command Output (stdout):
-# QA-NEXT: --
-# QA-NEXT: # {{R}}UN: at line 1
-# QA-NEXT: echo "pass test output"
-# QA-NEXT: # executed command: echo 'pass test output'
-# QA-NEXT: # .---command stdout------------
-# QA-NEXT: # | pass test output
-# QA-NEXT: # `-----------------------------
-# QA-EMPTY:
-# QA-NEXT: --
-# QA-EMPTY:
-# QA-NEXT: ********************
-# QA-NEXT: {{UN}}SUPPORTED: verbosity :: unsupported.txt (3 of 5)
-# QA-NEXT: Test requires the following unavailable features: asdf
-# QA-NEXT: ********************
-# QA-NEXT: {{X}}FAIL: verbosity :: xfail.txt (4 of 5)
-# QA-NEXT: Exit Code: 1
-# QA-EMPTY:
-# QA-NEXT: Command Output (stdout):
-# QA-NEXT: --
-# QA-NEXT: # {{R}}UN: at line 2
-# QA-NEXT: not echo "xfail test output"
-# QA-NEXT: # executed command: not echo 'xfail test output'
-# QA-NEXT: # .---command stdout------------
-# QA-NEXT: # | xfail test output
-# QA-NEXT: # `-----------------------------
-# QA-NEXT: # error: command failed with exit status: 1
-# QA-EMPTY:
-# QA-NEXT: --
-# QA-EMPTY:
-# QA-NEXT: ********************
-# QA-NEXT: XPASS: verbosity :: xpass.txt (5 of 5)
-# QA-NEXT: ******************** TEST 'verbosity :: xpass.txt' FAILED ********************
-# QA-NEXT: Exit Code: 0
-# QA-EMPTY:
-# QA-NEXT: Command Output (stdout):
-# QA-NEXT: --
-# QA-NEXT: # {{R}}UN: at line 2
-# QA-NEXT: echo "xpass test output"
-# QA-NEXT: # executed command: echo 'xpass test output'
-# QA-NEXT: # .---command stdout------------
-# QA-NEXT: # | xpass test output
-# QA-NEXT: # `-----------------------------
-# QA-EMPTY:
-# QA-NEXT: --
-# QA-EMPTY:
-# QA-NEXT: ********************
-# QA-NEXT: ********************
-# QA-NEXT: Failed Tests (1):
-# QA-NEXT: verbosity :: fail.txt
-# QA-EMPTY:
-# QA-NEXT: ********************
-# QA-NEXT: Unexpectedly Passed Tests (1):
-# QA-NEXT: verbosity :: xpass.txt
-# QA-EMPTY:
-# QA-EMPTY:
-# QA-NEXT: Total Discovered Tests: 5
-# QA-NEXT: Failed : 1 (20.00%)
-# QA-NEXT: Unexpectedly Passed: 1 (20.00%)
-
-# RUN: not %{lit} -a -q %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix QUIET < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix QUIET-ERR --implicit-check-not lit < %t/stderr.txt
-
-# RUN: not %{lit} -sqav %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix SQAV < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix QUIET-ERR --implicit-check-not lit < %t/stderr.txt
-
-# SQAV: -- Testing: 5 tests, 1 workers --
-# SQAV-NEXT: Testing:
-# SQAV-NEXT: FAIL: verbosity :: fail.txt (1 of 5)
-# SQAV-NEXT: ******************** TEST 'verbosity :: fail.txt' FAILED ********************
-# SQAV-NEXT: Exit Code: 127
-# SQAV-EMPTY:
-# SQAV-NEXT: Command Output (stdout):
-# SQAV-NEXT: --
-# SQAV-NEXT: # {{R}}UN: at line 1
-# SQAV-NEXT: echo "fail test output"
-# SQAV-NEXT: # executed command: echo 'fail test output'
-# SQAV-NEXT: # .---command stdout------------
-# SQAV-NEXT: # | fail test output
-# SQAV-NEXT: # `-----------------------------
-# SQAV-NEXT: # {{R}}UN: at line 2
-# SQAV-NEXT: fail
-# SQAV-NEXT: # executed command: fail
-# SQAV-NEXT: # .---command stderr------------
-# SQAV-NEXT: # | 'fail': command not found
-# SQAV-NEXT: # `-----------------------------
-# SQAV-NEXT: # error: command failed with exit status: 127
-# SQAV-EMPTY:
-# SQAV-NEXT: --
-# SQAV-EMPTY:
-# SQAV-NEXT: ********************
-# SQAV-NEXT: Testing:
-# SQAV-NEXT: PASS: verbosity :: pass.txt (2 of 5)
-# SQAV-NEXT: Testing:
-# SQAV-NEXT: {{UN}}SUPPORTED: verbosity :: unsupported.txt (3 of 5)
-# SQAV-NEXT: Testing:
-# SQAV-NEXT: {{X}}FAIL: verbosity :: xfail.txt (4 of 5)
-# SQAV-NEXT: Testing:
-# SQAV-NEXT: XPASS: verbosity :: xpass.txt (5 of 5)
-# SQAV-NEXT: ******************** TEST 'verbosity :: xpass.txt' FAILED ********************
-# SQAV-NEXT: Exit Code: 0
-# SQAV-EMPTY:
-# SQAV-NEXT: Command Output (stdout):
-# SQAV-NEXT: --
-# SQAV-NEXT: # {{R}}UN: at line 2
-# SQAV-NEXT: echo "xpass test output"
-# SQAV-NEXT: # executed command: echo 'xpass test output'
-# SQAV-NEXT: # .---command stdout------------
-# SQAV-NEXT: # | xpass test output
-# SQAV-NEXT: # `-----------------------------
-# SQAV-EMPTY:
-# SQAV-NEXT: --
-# SQAV-EMPTY:
-# SQAV-NEXT: ********************
-# SQAV-NEXT: Testing:
-# SQAV-NEXT: ********************
-# SQAV-NEXT: Failed Tests (1):
-# SQAV-NEXT: verbosity :: fail.txt
-# SQAV-EMPTY:
-# SQAV-NEXT: ********************
-# SQAV-NEXT: Unexpectedly Passed Tests (1):
-# SQAV-NEXT: verbosity :: xpass.txt
-# SQAV-EMPTY:
-# SQAV-EMPTY:
-# SQAV-NEXT: Total Discovered Tests: 5
-# SQAV-NEXT: Failed : 1 (20.00%)
-# SQAV-NEXT: Unexpectedly Passed: 1 (20.00%)
-
-
-### Aliases with specific overrides
-
-# RUN: not %{lit} --quiet --no-terse-summary %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix QUIET-W-SUMMARY < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix QUIET-ERR --implicit-check-not lit < %t/stderr.txt
-
-# QUIET-W-SUMMARY: -- Testing: 5 tests, 1 workers --
-# QUIET-W-SUMMARY-NEXT: FAIL: verbosity :: fail.txt (1 of 5)
-# QUIET-W-SUMMARY-NEXT: XPASS: verbosity :: xpass.txt (5 of 5)
-# QUIET-W-SUMMARY-NEXT: ********************
-# QUIET-W-SUMMARY-NEXT: Failed Tests (1):
-# QUIET-W-SUMMARY-NEXT: verbosity :: fail.txt
-# QUIET-W-SUMMARY-EMPTY:
-# QUIET-W-SUMMARY-NEXT: ********************
-# QUIET-W-SUMMARY-NEXT: Unexpectedly Passed Tests (1):
-# QUIET-W-SUMMARY-NEXT: verbosity :: xpass.txt
-# QUIET-W-SUMMARY-EMPTY:
-# QUIET-W-SUMMARY-EMPTY:
-# QUIET-W-SUMMARY-NEXT: Testing Time: {{.*}}s
-# QUIET-W-SUMMARY-EMPTY:
-# QUIET-W-SUMMARY-NEXT: Total Discovered Tests: 5
-# QUIET-W-SUMMARY-NEXT: Unsupported : 1 (20.00%)
-# QUIET-W-SUMMARY-NEXT: Passed : 1 (20.00%)
-# QUIET-W-SUMMARY-NEXT: Expectedly Failed : 1 (20.00%)
-# QUIET-W-SUMMARY-NEXT: Failed : 1 (20.00%)
-# QUIET-W-SUMMARY-NEXT: Unexpectedly Passed: 1 (20.00%)
-
-
-# RUN: not %{lit} --quiet --progress-bar %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix QUIET-W-PROGRESS < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix QUIET-ERR --implicit-check-not lit < %t/stderr.txt
-
-# QUIET-W-PROGRESS: -- Testing: 5 tests, 1 workers --
-# QUIET-W-PROGRESS-NEXT: Testing:
-# QUIET-W-PROGRESS-NEXT: FAIL: verbosity :: fail.txt (1 of 5)
-# QUIET-W-PROGRESS-NEXT: Testing:
-# QUIET-W-PROGRESS-NEXT: XPASS: verbosity :: xpass.txt (5 of 5)
-# QUIET-W-PROGRESS-NEXT: Testing:
-# QUIET-W-PROGRESS-NEXT: ********************
-# QUIET-W-PROGRESS-NEXT: Failed Tests (1):
-# QUIET-W-PROGRESS-NEXT: verbosity :: fail.txt
-# QUIET-W-PROGRESS-EMPTY:
-# QUIET-W-PROGRESS-NEXT: ********************
-# QUIET-W-PROGRESS-NEXT: Unexpectedly Passed Tests (1):
-# QUIET-W-PROGRESS-NEXT: verbosity :: xpass.txt
-# QUIET-W-PROGRESS-EMPTY:
-# QUIET-W-PROGRESS-EMPTY:
-# QUIET-W-PROGRESS-NEXT: Total Discovered Tests: 5
-# QUIET-W-PROGRESS-NEXT: Failed : 1 (20.00%)
-# QUIET-W-PROGRESS-NEXT: Unexpectedly Passed: 1 (20.00%)
-
-# RUN: not %{lit} --show-all --terse-summary %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix ALL-TERSE < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS-ERR --implicit-check-not lit < %t/stderr.txt
-
-# ALL-TERSE: -- Testing: 5 tests, 1 workers --
-# ALL-TERSE-NEXT: FAIL: verbosity :: fail.txt (1 of 5)
-# ALL-TERSE-NEXT: ******************** TEST 'verbosity :: fail.txt' FAILED ********************
-# ALL-TERSE-NEXT: Exit Code: 127
-# ALL-TERSE-EMPTY:
-# ALL-TERSE-NEXT: Command Output (stdout):
-# ALL-TERSE-NEXT: --
-# ALL-TERSE-NEXT: # {{R}}UN: at line 1
-# ALL-TERSE-NEXT: echo "fail test output"
-# ALL-TERSE-NEXT: # executed command: echo 'fail test output'
-# ALL-TERSE-NEXT: # .---command stdout------------
-# ALL-TERSE-NEXT: # | fail test output
-# ALL-TERSE-NEXT: # `-----------------------------
-# ALL-TERSE-NEXT: # {{R}}UN: at line 2
-# ALL-TERSE-NEXT: fail
-# ALL-TERSE-NEXT: # executed command: fail
-# ALL-TERSE-NEXT: # .---command stderr------------
-# ALL-TERSE-NEXT: # | 'fail': command not found
-# ALL-TERSE-NEXT: # `-----------------------------
-# ALL-TERSE-NEXT: # error: command failed with exit status: 127
-# ALL-TERSE-EMPTY:
-# ALL-TERSE-NEXT: --
-# ALL-TERSE-EMPTY:
-# ALL-TERSE-NEXT: ********************
-# ALL-TERSE-NEXT: PASS: verbosity :: pass.txt (2 of 5)
-# ALL-TERSE-NEXT: Exit Code: 0
-# ALL-TERSE-EMPTY:
-# ALL-TERSE-NEXT: Command Output (stdout):
-# ALL-TERSE-NEXT: --
-# ALL-TERSE-NEXT: # {{R}}UN: at line 1
-# ALL-TERSE-NEXT: echo "pass test output"
-# ALL-TERSE-NEXT: # executed command: echo 'pass test output'
-# ALL-TERSE-NEXT: # .---command stdout------------
-# ALL-TERSE-NEXT: # | pass test output
-# ALL-TERSE-NEXT: # `-----------------------------
-# ALL-TERSE-EMPTY:
-# ALL-TERSE-NEXT: --
-# ALL-TERSE-EMPTY:
-# ALL-TERSE-NEXT: ********************
-# ALL-TERSE-NEXT: {{UN}}SUPPORTED: verbosity :: unsupported.txt (3 of 5)
-# ALL-TERSE-NEXT: Test requires the following unavailable features: asdf
-# ALL-TERSE-NEXT: ********************
-# ALL-TERSE-NEXT: {{X}}FAIL: verbosity :: xfail.txt (4 of 5)
-# ALL-TERSE-NEXT: Exit Code: 1
-# ALL-TERSE-EMPTY:
-# ALL-TERSE-NEXT: Command Output (stdout):
-# ALL-TERSE-NEXT: --
-# ALL-TERSE-NEXT: # {{R}}UN: at line 2
-# ALL-TERSE-NEXT: not echo "xfail test output"
-# ALL-TERSE-NEXT: # executed command: not echo 'xfail test output'
-# ALL-TERSE-NEXT: # .---command stdout------------
-# ALL-TERSE-NEXT: # | xfail test output
-# ALL-TERSE-NEXT: # `-----------------------------
-# ALL-TERSE-NEXT: # error: command failed with exit status: 1
-# ALL-TERSE-EMPTY:
-# ALL-TERSE-NEXT: --
-# ALL-TERSE-EMPTY:
-# ALL-TERSE-NEXT: ********************
-# ALL-TERSE-NEXT: XPASS: verbosity :: xpass.txt (5 of 5)
-# ALL-TERSE-NEXT: ******************** TEST 'verbosity :: xpass.txt' FAILED ********************
-# ALL-TERSE-NEXT: Exit Code: 0
-# ALL-TERSE-EMPTY:
-# ALL-TERSE-NEXT: Command Output (stdout):
-# ALL-TERSE-NEXT: --
-# ALL-TERSE-NEXT: # {{R}}UN: at line 2
-# ALL-TERSE-NEXT: echo "xpass test output"
-# ALL-TERSE-NEXT: # executed command: echo 'xpass test output'
-# ALL-TERSE-NEXT: # .---command stdout------------
-# ALL-TERSE-NEXT: # | xpass test output
-# ALL-TERSE-NEXT: # `-----------------------------
-# ALL-TERSE-EMPTY:
-# ALL-TERSE-NEXT: --
-# ALL-TERSE-EMPTY:
-# ALL-TERSE-NEXT: ********************
-# ALL-TERSE-NEXT: ********************
-# ALL-TERSE-NEXT: Failed Tests (1):
-# ALL-TERSE-NEXT: verbosity :: fail.txt
-# ALL-TERSE-EMPTY:
-# ALL-TERSE-NEXT: ********************
-# ALL-TERSE-NEXT: Unexpectedly Passed Tests (1):
-# ALL-TERSE-NEXT: verbosity :: xpass.txt
-# ALL-TERSE-EMPTY:
-# ALL-TERSE-EMPTY:
-# ALL-TERSE-NEXT: Total Discovered Tests: 5
-# ALL-TERSE-NEXT: Failed : 1 (20.00%)
-# ALL-TERSE-NEXT: Unexpectedly Passed: 1 (20.00%)
-
-# RUN: not %{lit} --show-all --diagnostic-level error %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix SHOW-ALL < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix QUIET-ERR --implicit-check-not lit < %t/stderr.txt
-
-# RUN: not %{lit} --show-all --test-output off %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS-ERR --implicit-check-not lit < %t/stderr.txt
-
-# RUN: not %{lit} --succinct --print-result-after all %{inputs}/verbosity 2> %t/stderr.txt > %t/stdout.txt
-# RUN: FileCheck %s --check-prefix SUCCINCT-RESULT-ALL < %t/stdout.txt
-# RUN: FileCheck %s --check-prefix NO-ARGS-ERR --implicit-check-not lit < %t/stderr.txt
-
-# SUCCINCT-RESULT-ALL: -- Testing: 5 tests, 1 workers --
-# SUCCINCT-RESULT-ALL-NEXT: Testing:
-# SUCCINCT-RESULT-ALL-NEXT: FAIL: verbosity :: fail.txt (1 of 5)
-# SUCCINCT-RESULT-ALL-NEXT: Testing:
-# SUCCINCT-RESULT-ALL-NEXT: PASS: verbosity :: pass.txt (2 of 5)
-# SUCCINCT-RESULT-ALL-NEXT: Testing:
-# SUCCINCT-RESULT-ALL-NEXT: {{UN}}SUPPORTED: verbosity :: unsupported.txt (3 of 5)
-# SUCCINCT-RESULT-ALL-NEXT: Testing:
-# SUCCINCT-RESULT-ALL-NEXT: {{X}}FAIL: verbosity :: xfail.txt (4 of 5)
-# SUCCINCT-RESULT-ALL-NEXT: Testing:
-# SUCCINCT-RESULT-ALL-NEXT: XPASS: verbosity :: xpass.txt (5 of 5)
-# SUCCINCT-RESULT-ALL-NEXT: Testing:
-# SUCCINCT-RESULT-ALL-NEXT: ********************
-# SUCCINCT-RESULT-ALL-NEXT: Failed Tests (1):
-# SUCCINCT-RESULT-ALL-NEXT: verbosity :: fail.txt
-# SUCCINCT-RESULT-ALL-EMPTY:
-# SUCCINCT-RESULT-ALL-NEXT: ********************
-# SUCCINCT-RESULT-ALL-NEXT: Unexpectedly Passed Tests (1):
-# SUCCINCT-RESULT-ALL-NEXT: verbosity :: xpass.txt
-# SUCCINCT-RESULT-ALL-EMPTY:
-# SUCCINCT-RESULT-ALL-EMPTY:
-# SUCCINCT-RESULT-ALL-NEXT: Testing Time: {{.*}}s
-# SUCCINCT-RESULT-ALL-EMPTY:
-# SUCCINCT-RESULT-ALL-NEXT: Total Discovered Tests: 5
-# SUCCINCT-RESULT-ALL-NEXT: Unsupported : 1 (20.00%)
-# SUCCINCT-RESULT-ALL-NEXT: Passed : 1 (20.00%)
-# SUCCINCT-RESULT-ALL-NEXT: Expectedly Failed : 1 (20.00%)
-# SUCCINCT-RESULT-ALL-NEXT: Failed : 1 (20.00%)
-# SUCCINCT-RESULT-ALL-NEXT: Unexpectedly Passed: 1 (20.00%)
diff --git a/llvm/utils/lit/tests/windows-pools.py b/llvm/utils/lit/tests/windows-pools.py
deleted file mode 100644
index 6ba43ecca6284..0000000000000
--- a/llvm/utils/lit/tests/windows-pools.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# Create a directory with 20 files and check the number of pools and workers per pool that lit will use.
-
-# RUN: rm -Rf %t.dir && mkdir -p %t.dir
-# RUN: %{python} -c "for i in range(20): open(rf'%t.dir/file{i}.txt', 'w').write('RUN:')"
-
-# RUN: echo "import lit.formats" > %t.dir/lit.cfg
-# RUN: echo "config.name = \"top-level-suite\"" >> %t.dir/lit.cfg
-# RUN: echo "config.suffixes = [\".txt\"]" >> %t.dir/lit.cfg
-# RUN: echo "config.test_format = lit.formats.ShTest()" >> %t.dir/lit.cfg
-
-
-# 15 workers per pool max, 100 workers total max: we expect lit to cap the workers to the number of files
-# RUN: env "LIT_WINDOWS_MAX_WORKERS_PER_POOL=15" %{lit} -s %t.dir/ -j100 > %t.out 2>&1
-# CHECK: Using 2 pools balancing 20 workers total distributed as [10, 10]
-# CHECK: Passed: 20
-
-# 5 workers per pool max, 17 workers total max
-# RUN: env "LIT_WINDOWS_MAX_WORKERS_PER_POOL=5" %{lit} -s %t.dir/ -j17 >> %t.out 2>&1
-# CHECK: Using 4 pools balancing 17 workers total distributed as [5, 4, 4, 4]
-# CHECK: Passed: 20
-
-# 19 workers per pool max, 19 workers total max
-# RUN: env "LIT_WINDOWS_MAX_WORKERS_PER_POOL=19" %{lit} -s %t.dir/ -j19 >> %t.out 2>&1
-# CHECK-NOT: workers total distributed as
-# CHECK: Passed: 20
-
-# RUN: cat %t.out | FileCheck %s
diff --git a/llvm/utils/lit/tests/xfail-cl.py b/llvm/utils/lit/tests/xfail-cl.py
deleted file mode 100644
index f1e0e335e396f..0000000000000
--- a/llvm/utils/lit/tests/xfail-cl.py
+++ /dev/null
@@ -1,65 +0,0 @@
-# Check that XFAILing works via command line or env var.
-
-# RUN: %{lit} --xfail 'false.txt;false2.txt;top-level-suite :: b :: test.txt' \
-# RUN: --xfail-not 'true-xfail.txt;top-level-suite :: a :: test-xfail.txt' \
-# RUN: %{inputs}/xfail-cl \
-# RUN: | FileCheck --check-prefix=CHECK-FILTER %s
-
-# RUN: %{lit} --xfail 'false.txt;false2.txt;top-level-suite :: b :: test.txt' \
-# RUN: --exclude-xfail \
-# RUN: %{inputs}/xfail-cl \
-# RUN: | FileCheck --check-prefixes=CHECK-EXCLUDED,CHECK-EXCLUDED-NOOVERRIDE %s
-
-# RUN: %{lit} --xfail 'false.txt;false2.txt;top-level-suite :: b :: test.txt' \
-# RUN: --xfail-not 'true-xfail.txt' \
-# RUN: --exclude-xfail \
-# RUN: %{inputs}/xfail-cl \
-# RUN: | FileCheck --check-prefixes=CHECK-EXCLUDED,CHECK-EXCLUDED-OVERRIDE %s
-
-
-# RUN: env LIT_XFAIL='false.txt;false2.txt;top-level-suite :: b :: test.txt' \
-# RUN: LIT_XFAIL_NOT='true-xfail.txt;top-level-suite :: a :: test-xfail.txt' \
-# RUN: %{lit} %{inputs}/xfail-cl \
-# RUN: | FileCheck --check-prefix=CHECK-FILTER %s
-
-# Check that --xfail-not and LIT_XFAIL_NOT always have precedence.
-
-# RUN: env LIT_XFAIL=true-xfail.txt \
-# RUN: %{lit} --xfail true-xfail.txt --xfail-not true-xfail.txt \
-# RUN: --xfail true-xfail.txt %{inputs}/xfail-cl/true-xfail.txt \
-# RUN: | FileCheck --check-prefix=CHECK-OVERRIDE %s
-
-# RUN: env LIT_XFAIL_NOT=true-xfail.txt LIT_XFAIL=true-xfail.txt \
-# RUN: %{lit} --xfail true-xfail.txt %{inputs}/xfail-cl/true-xfail.txt \
-# RUN: | FileCheck --check-prefix=CHECK-OVERRIDE %s
-
-# END.
-
-# CHECK-FILTER: Testing: 11 tests, {{[0-9]*}} workers
-# CHECK-FILTER-DAG: {{^}}PASS: top-level-suite :: a :: test.txt
-# CHECK-FILTER-DAG: {{^}}XFAIL: top-level-suite :: b :: test.txt
-# CHECK-FILTER-DAG: {{^}}XFAIL: top-level-suite :: a :: false.txt
-# CHECK-FILTER-DAG: {{^}}XFAIL: top-level-suite :: b :: false.txt
-# CHECK-FILTER-DAG: {{^}}XFAIL: top-level-suite :: false.txt
-# CHECK-FILTER-DAG: {{^}}XFAIL: top-level-suite :: false2.txt
-# CHECK-FILTER-DAG: {{^}}PASS: top-level-suite :: true.txt
-# CHECK-FILTER-DAG: {{^}}PASS: top-level-suite :: true-xfail.txt
-# CHECK-FILTER-DAG: {{^}}PASS: top-level-suite :: a :: test-xfail.txt
-# CHECK-FILTER-DAG: {{^}}XFAIL: top-level-suite :: b :: test-xfail.txt
-
-# CHECK-OVERRIDE: Testing: 1 tests, {{[0-9]*}} workers
-# CHECK-OVERRIDE: {{^}}PASS: top-level-suite :: true-xfail.txt
-
-# CHECK-EXCLUDED: Testing: 11 tests, {{[0-9]*}} workers
-# CHECK-EXCLUDED-DAG: {{^}}EXCLUDED: top-level-suite :: a :: false.txt
-# CHECK-EXCLUDED-DAG: {{^}}EXCLUDED: top-level-suite :: a :: test-xfail.txt
-# CHECK-EXCLUDED-DAG: {{^}}PASS: top-level-suite :: a :: test.txt
-# CHECK-EXCLUDED-DAG: {{^}}EXCLUDED: top-level-suite :: b :: false.txt
-# CHECK-EXCLUDED-DAG: {{^}}EXCLUDED: top-level-suite :: b :: test-xfail.txt
-# CHECK-EXCLUDED-DAG: {{^}}EXCLUDED: top-level-suite :: b :: test.txt
-# CHECK-EXCLUDED-DAG: {{^}}EXCLUDED: top-level-suite :: false.txt
-# CHECK-EXCLUDED-DAG: {{^}}EXCLUDED: top-level-suite :: false2.txt
-# CHECK-EXCLUDED-DAG: {{^}}PASS: top-level-suite :: true-xfail-conditionally.txt
-# CHECK-EXCLUDED-NOOVERRIDE-DAG: {{^}}EXCLUDED: top-level-suite :: true-xfail.txt
-# CHECK-EXCLUDED-OVERRIDE-DAG: {{^}}PASS: top-level-suite :: true-xfail.txt
-# CHECK-EXCLUDED-DAG: {{^}}PASS: top-level-suite :: true.txt
diff --git a/llvm/utils/lit/tests/xunit-output-report-failures-only.py b/llvm/utils/lit/tests/xunit-output-report-failures-only.py
deleted file mode 100644
index c3315780c8cc2..0000000000000
--- a/llvm/utils/lit/tests/xunit-output-report-failures-only.py
+++ /dev/null
@@ -1,12 +0,0 @@
-## Check xunit output.
-# RUN: not %{lit} --report-failures-only --xunit-xml-output %t.xunit.xml %{inputs}/xunit-output
-# RUN: FileCheck --input-file=%t.xunit.xml %s
-
-# CHECK: <?xml version="1.0" encoding="UTF-8"?>
-# CHECK-NEXT: <testsuites time="{{[0-9.]+}}">
-# CHECK-NEXT: <testsuite name="test-data" tests="1" failures="1" skipped="0" time="{{[0-9.]+}}">
-# CHECK-NEXT: <testcase classname="test-data.test-data" name="bad&name.ini" time="{{[0-9.]+}}">
-# CHECK-NEXT: <failure><![CDATA[& < > ]]]]><![CDATA[> &"]]></failure>
-# CHECK-NEXT: </testcase>
-# CHECK-NEXT: </testsuite>
-# CHECK-NEXT: </testsuites>
diff --git a/llvm/utils/lit/tests/xunit-output.py b/llvm/utils/lit/tests/xunit-output.py
deleted file mode 100644
index c6cf3dfc24c81..0000000000000
--- a/llvm/utils/lit/tests/xunit-output.py
+++ /dev/null
@@ -1,27 +0,0 @@
-# UNSUPPORTED: system-windows
-
-# Check xunit output
-# RUN: rm -rf %t.xunit.xml
-# RUN: not %{lit} --xunit-xml-output %t.xunit.xml %{inputs}/xunit-output
-# If xmllint is installed verify that the generated xml is well-formed
-# RUN: sh -c 'if command -v xmllint 2>/dev/null; then xmllint --noout %t.xunit.xml; fi'
-# RUN: FileCheck < %t.xunit.xml %s
-
-# CHECK: <?xml version="1.0" encoding="UTF-8"?>
-# CHECK-NEXT: <testsuites time="{{[0-9]+\.[0-9]+}}">
-# CHECK-NEXT: <testsuite name="test-data" tests="5" failures="1" skipped="3" time="{{[0-9]+\.[0-9]+}}">
-# CHECK-NEXT: <testcase classname="test-data.test-data" name="bad&name.ini" time="{{[0-9]+\.[0-9]+}}">
-# CHECK-NEXT: <failure><![CDATA[& < > ]]]]><![CDATA[> &"]]></failure>
-# CHECK-NEXT: </testcase>
-# CHECK-NEXT: <testcase classname="test-data.test-data" name="excluded.ini" time="{{[0-9]+\.[0-9]+}}">
-# CHECK-NEXT: <skipped message="Test not selected (--filter, --max-tests)"/>
-# CHECK-NEXT: </testcase>
-# CHECK-NEXT: <testcase classname="test-data.test-data" name="missing_feature.ini" time="{{[0-9]+\.[0-9]+}}">
-# CHECK-NEXT: <skipped message="Missing required feature(s): dummy_feature"/>
-# CHECK-NEXT: </testcase>
-# CHECK-NEXT: <testcase classname="test-data.test-data" name="pass.ini" time="{{[0-9]+\.[0-9]+}}"/>
-# CHECK-NEXT: <testcase classname="test-data.test-data" name="unsupported.ini" time="{{[0-9]+\.[0-9]+}}">
-# CHECK-NEXT: <skipped message="Unsupported configuration"/>
-# CHECK-NEXT: </testcase>
-# CHECK-NEXT: </testsuite>
-# CHECK-NEXT: </testsuites>
More information about the cfe-commits
mailing list