[llvm] r251481 - lit/TestRunner.py: Factor variable subsitution into an own function; NFCI
Matthias Braun via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 27 19:36:45 PDT 2015
Author: matze
Date: Tue Oct 27 21:36:45 2015
New Revision: 251481
URL: http://llvm.org/viewvc/llvm-project?rev=251481&view=rev
Log:
lit/TestRunner.py: Factor variable subsitution into an own function; NFCI
This is a clearer separation of concerns and makes it easier to reuse
the function.
Modified:
llvm/trunk/utils/lit/lit/TestRunner.py
Modified: llvm/trunk/utils/lit/lit/TestRunner.py
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/TestRunner.py?rev=251481&r1=251480&r2=251481&view=diff
==============================================================================
--- llvm/trunk/utils/lit/lit/TestRunner.py (original)
+++ llvm/trunk/utils/lit/lit/TestRunner.py Tue Oct 27 21:36:45 2015
@@ -456,13 +456,27 @@ def getDefaultSubstitutions(test, tmpDir
])
return substitutions
-def parseIntegratedTestScript(test, substitutions, require_script=True):
+def applySubstitutions(script, substitutions):
+ """Apply substitutions to the script. Allow full regular expression syntax.
+ Replace each matching occurrence of regular expression pattern a with
+ substitution b in line ln."""
+ def processLine(ln):
+ # Apply substitutions
+ for a,b in substitutions:
+ if kIsWindows:
+ b = b.replace("\\","\\\\")
+ ln = re.sub(a, b, ln)
+
+ # Strip the trailing newline and any extra whitespace.
+ return ln.strip()
+ return map(processLine, script)
+
+def parseIntegratedTestScript(test, require_script=True):
"""parseIntegratedTestScript - Scan an LLVM/Clang style integrated test
script and extract the lines to 'RUN' as well as 'XFAIL' and 'REQUIRES'
- and 'UNSUPPORTED' information. The RUN lines also will have variable
- substitution performed. If 'require_script' is False an empty script may be
- returned. This can be used for test formats where the actual script is
- optional or ignored.
+ and 'UNSUPPORTED' information. If 'require_script' is False an empty script
+ may be returned. This can be used for test formats where the actual script
+ is optional or ignored.
"""
# Collect the test lines from the script.
sourcepath = test.getSourcePath()
@@ -504,21 +518,6 @@ def parseIntegratedTestScript(test, subs
raise ValueError("unknown script command type: %r" % (
command_type,))
- # Apply substitutions to the script. Allow full regular
- # expression syntax. Replace each matching occurrence of regular
- # expression pattern a with substitution b in line ln.
- def processLine(ln):
- # Apply substitutions
- for a,b in substitutions:
- if kIsWindows:
- b = b.replace("\\","\\\\")
- ln = re.sub(a, b, ln)
-
- # Strip the trailing newline and any extra whitespace.
- return ln.strip()
- script = [processLine(ln)
- for ln in script]
-
# Verify the script contains a run line.
if require_script and not script:
return lit.Test.Result(Test.UNRESOLVED, "Test has no run line!")
@@ -596,16 +595,18 @@ def executeShTest(test, litConfig, useEx
if test.config.unsupported:
return (Test.UNSUPPORTED, 'Test is unsupported')
- tmpDir, tmpBase = getTempPaths(test)
- substitutions = list(extra_substitutions)
- substitutions += getDefaultSubstitutions(test, tmpDir, tmpBase,
- normalize_slashes=useExternalSh)
- script = parseIntegratedTestScript(test, substitutions)
+ script = parseIntegratedTestScript(test)
if isinstance(script, lit.Test.Result):
return script
if litConfig.noExecute:
return lit.Test.Result(Test.PASS)
+ tmpDir, tmpBase = getTempPaths(test)
+ substitutions = list(extra_substitutions)
+ substitutions += getDefaultSubstitutions(test, tmpDir, tmpBase,
+ normalize_slashes=useExternalSh)
+ script = applySubstitutions(script, substitutions)
+
# Re-run failed tests up to test_retry_attempts times.
attempts = 1
if hasattr(test.config, 'test_retry_attempts'):
More information about the llvm-commits
mailing list