Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 12 additions & 4 deletions llvm/utils/lit/lit/DiffUpdater.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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
Expand Down