From c03ceb92ca601adb1dd11a957e77dc5782b25216 Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Tue, 17 Oct 2017 23:46:34 +0000 Subject: [PATCH] lit: Improve %: normalization. The new scheme should match the normalization of embedded paths in linkrepro tar files. Differential Revision: https://reviews.llvm.org/D39023 llvm-svn: 316044 --- llvm/utils/lit/lit/TestRunner.py | 33 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/llvm/utils/lit/lit/TestRunner.py b/llvm/utils/lit/lit/TestRunner.py index b874f9ee61b6..4def05d88704 100644 --- a/llvm/utils/lit/lit/TestRunner.py +++ b/llvm/utils/lit/lit/TestRunner.py @@ -825,6 +825,13 @@ def getTempPaths(test): tmpBase = os.path.join(tmpDir, execbase) return tmpDir, tmpBase +def colonNormalizePath(path): + if kIsWindows: + return re.sub(r'^(.):', r'\1', path.replace('\\', '/')) + else: + assert path[0] == '/' + return path[1:] + def getDefaultSubstitutions(test, tmpDir, tmpBase, normalize_slashes=False): sourcepath = test.getSourcePath() sourcedir = os.path.dirname(sourcepath) @@ -860,23 +867,15 @@ def getDefaultSubstitutions(test, tmpDir, tmpBase, normalize_slashes=False): ('%/T', tmpDir.replace('\\', '/')), ]) - # "%:[STpst]" are paths without colons. - if kIsWindows: - substitutions.extend([ - ('%:s', re.sub(r'^(.):', r'\1', sourcepath)), - ('%:S', re.sub(r'^(.):', r'\1', sourcedir)), - ('%:p', re.sub(r'^(.):', r'\1', sourcedir)), - ('%:t', re.sub(r'^(.):', r'\1', tmpBase) + '.tmp'), - ('%:T', re.sub(r'^(.):', r'\1', tmpDir)), - ]) - else: - substitutions.extend([ - ('%:s', sourcepath), - ('%:S', sourcedir), - ('%:p', sourcedir), - ('%:t', tmpBase + '.tmp'), - ('%:T', tmpDir), - ]) + # "%:[STpst]" are normalized paths without colons and without a leading + # slash. + substitutions.extend([ + ('%:s', colonNormalizePath(sourcepath)), + ('%:S', colonNormalizePath(sourcedir)), + ('%:p', colonNormalizePath(sourcedir)), + ('%:t', colonNormalizePath(tmpBase + '.tmp')), + ('%:T', colonNormalizePath(tmpDir)), + ]) return substitutions def applySubstitutions(script, substitutions):