From 08639983ded4250c18614c62450e70ba653aac4c Mon Sep 17 00:00:00 2001 From: Alexander Kornienko Date: Wed, 14 Nov 2012 20:26:19 +0000 Subject: [PATCH] Added %(line), %(line+), %(line-) substitutions to lit git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167971 91177308-0d34-0410-b5e6-96231b3b80d8 --- docs/TestingGuide.html | 5 +++++ utils/lit/lit/TestRunner.py | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/docs/TestingGuide.html b/docs/TestingGuide.html index d90c8ad1c32..1be75511227 100644 --- a/docs/TestingGuide.html +++ b/docs/TestingGuide.html @@ -723,6 +723,11 @@ define two separate CHECK lines that match on the same line.
The full path to the test case's source. This is suitable for passing on the command line as the input to an llvm tool.
+
%(line), %(line+number), %(line-number)
+
The number of the line where this variable is used, with an optional + integer offset. This can be used in tests with multiple RUN: lines, which + reference test file's line numbers.
+
$srcdir
The source directory from where the "make check" was run.
diff --git a/utils/lit/lit/TestRunner.py b/utils/lit/lit/TestRunner.py index 0c1911ed356..e339652f834 100644 --- a/utils/lit/lit/TestRunner.py +++ b/utils/lit/lit/TestRunner.py @@ -432,7 +432,9 @@ def parseIntegratedTestScript(test, normalize_slashes=False, script = [] xfails = [] requires = [] + line_number = 0 for ln in open(sourcepath): + line_number += 1 if 'RUN:' in ln: # Isolate the command to run. index = ln.index('RUN:') @@ -441,6 +443,15 @@ def parseIntegratedTestScript(test, normalize_slashes=False, # Trim trailing whitespace. ln = ln.rstrip() + # Substitute line number expressions + ln = re.sub('%\(line\)', str(line_number), ln) + def replace_line_number(match): + if match.group(1) == '+': + return str(line_number + int(match.group(2))) + if match.group(1) == '-': + return str(line_number - int(match.group(2))) + ln = re.sub('%\(line *([\+-]) *(\d+)\)', replace_line_number, ln) + # Collapse lines with trailing '\\'. if script and script[-1][-1] == '\\': script[-1] = script[-1][:-1] + ln