mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-03 17:31:50 +00:00
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@251481 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ae6661b054
commit
1d7e0281ab
@ -456,13 +456,27 @@ def getDefaultSubstitutions(test, tmpDir, tmpBase, normalize_slashes=False):
|
|||||||
])
|
])
|
||||||
return substitutions
|
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
|
"""parseIntegratedTestScript - Scan an LLVM/Clang style integrated test
|
||||||
script and extract the lines to 'RUN' as well as 'XFAIL' and 'REQUIRES'
|
script and extract the lines to 'RUN' as well as 'XFAIL' and 'REQUIRES'
|
||||||
and 'UNSUPPORTED' information. The RUN lines also will have variable
|
and 'UNSUPPORTED' information. If 'require_script' is False an empty script
|
||||||
substitution performed. If 'require_script' is False an empty script may be
|
may be returned. This can be used for test formats where the actual script
|
||||||
returned. This can be used for test formats where the actual script is
|
is optional or ignored.
|
||||||
optional or ignored.
|
|
||||||
"""
|
"""
|
||||||
# Collect the test lines from the script.
|
# Collect the test lines from the script.
|
||||||
sourcepath = test.getSourcePath()
|
sourcepath = test.getSourcePath()
|
||||||
@ -504,21 +518,6 @@ def parseIntegratedTestScript(test, substitutions, require_script=True):
|
|||||||
raise ValueError("unknown script command type: %r" % (
|
raise ValueError("unknown script command type: %r" % (
|
||||||
command_type,))
|
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.
|
# Verify the script contains a run line.
|
||||||
if require_script and not script:
|
if require_script and not script:
|
||||||
return lit.Test.Result(Test.UNRESOLVED, "Test has no run line!")
|
return lit.Test.Result(Test.UNRESOLVED, "Test has no run line!")
|
||||||
@ -596,16 +595,18 @@ def executeShTest(test, litConfig, useExternalSh,
|
|||||||
if test.config.unsupported:
|
if test.config.unsupported:
|
||||||
return (Test.UNSUPPORTED, 'Test is unsupported')
|
return (Test.UNSUPPORTED, 'Test is unsupported')
|
||||||
|
|
||||||
tmpDir, tmpBase = getTempPaths(test)
|
script = parseIntegratedTestScript(test)
|
||||||
substitutions = list(extra_substitutions)
|
|
||||||
substitutions += getDefaultSubstitutions(test, tmpDir, tmpBase,
|
|
||||||
normalize_slashes=useExternalSh)
|
|
||||||
script = parseIntegratedTestScript(test, substitutions)
|
|
||||||
if isinstance(script, lit.Test.Result):
|
if isinstance(script, lit.Test.Result):
|
||||||
return script
|
return script
|
||||||
if litConfig.noExecute:
|
if litConfig.noExecute:
|
||||||
return lit.Test.Result(Test.PASS)
|
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.
|
# Re-run failed tests up to test_retry_attempts times.
|
||||||
attempts = 1
|
attempts = 1
|
||||||
if hasattr(test.config, 'test_retry_attempts'):
|
if hasattr(test.config, 'test_retry_attempts'):
|
||||||
|
Loading…
Reference in New Issue
Block a user