[llvm] [Utils] fix diff_test_updater on Windows (PR #158235)
Henrik G. Olsson via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 12 01:00:05 PDT 2025
https://github.com/hnrklssn created https://github.com/llvm/llvm-project/pull/158235
None
>From 2f7765b8c521f1300666f046a651e71e6990c30f Mon Sep 17 00:00:00 2001
From: "Henrik G. Olsson" <h_olsson at apple.com>
Date: Fri, 12 Sep 2025 00:59:16 -0700
Subject: [PATCH] [Utils] fix diff_test_updater on Windows
---
llvm/utils/lit/lit/DiffUpdater.py | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/llvm/utils/lit/lit/DiffUpdater.py b/llvm/utils/lit/lit/DiffUpdater.py
index fefcdcc99f3f2..a29c46fb8508f 100644
--- a/llvm/utils/lit/lit/DiffUpdater.py
+++ b/llvm/utils/lit/lit/DiffUpdater.py
@@ -62,17 +62,19 @@ def __str__(self):
@staticmethod
def get_target_dir(commands, test_path):
+ # posix=True breaks Windows paths because \ is treated as an escaping character
for cmd in commands:
- split = shlex.split(cmd)
+ split = shlex.split(cmd, posix=False)
if "split-file" not in split:
continue
start_idx = split.index("split-file")
split = split[start_idx:]
if len(split) < 3:
continue
- if split[1].strip() != test_path:
+ p = unquote(split[1].strip())
+ if not test_path.samefile(p):
continue
- return split[2].strip()
+ return unquote(split[2].strip())
return None
@staticmethod
@@ -104,6 +106,12 @@ def _get_split_line_path(l):
return l.rstrip()
+def unquote(s):
+ if len(s) > 1 and s[0] == s[-1] and (s[0] == '"' or s[0] == "'"):
+ return s[1:-1]
+ return s
+
+
def get_source_and_target(a, b, test_path, commands):
"""
Try to figure out which file is the test output and which is the reference.
@@ -145,7 +153,7 @@ def diff_test_updater(result, test, commands):
[cmd, a, b] = args
if cmd != "diff":
return None
- res = get_source_and_target(a, b, 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
More information about the llvm-commits
mailing list