diff options
author | Alexander Kornienko <alexfh@google.com> | 2012-11-14 20:26:19 +0000 |
---|---|---|
committer | Alexander Kornienko <alexfh@google.com> | 2012-11-14 20:26:19 +0000 |
commit | 08639983ded4250c18614c62450e70ba653aac4c (patch) | |
tree | 59a6610eabf04c4aca104d5a080c99dfb85bf134 | |
parent | 984639b7a4b2e2f15d82d64623a634b4772f022f (diff) | |
download | external_llvm-08639983ded4250c18614c62450e70ba653aac4c.zip external_llvm-08639983ded4250c18614c62450e70ba653aac4c.tar.gz external_llvm-08639983ded4250c18614c62450e70ba653aac4c.tar.bz2 |
Added %(line), %(line+<number>), %(line-<number>) substitutions to lit
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167971 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | docs/TestingGuide.html | 5 | ||||
-rw-r--r-- | utils/lit/lit/TestRunner.py | 11 |
2 files changed, 16 insertions, 0 deletions
diff --git a/docs/TestingGuide.html b/docs/TestingGuide.html index d90c8ad..1be7551 100644 --- a/docs/TestingGuide.html +++ b/docs/TestingGuide.html @@ -723,6 +723,11 @@ define two separate CHECK lines that match on the same line. <dd>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.</dd> + <dt><b>%(line), %(line+<i>number</i>), %(line-<i>number</i>)</b></dt> + <dd>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.</dd> + <dt><b>$srcdir</b></dt> <dd>The source directory from where the "<tt>make check</tt>" was run.</dd> diff --git a/utils/lit/lit/TestRunner.py b/utils/lit/lit/TestRunner.py index 0c1911e..e339652 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 |