зеркало из https://github.com/microsoft/clang-1.git
MultiTestRunner: Reenable --vg option.
- Simplified from before and using --error-exitcode so failures show up as failures. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77424 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
70186ab134
Коммит
9a676b7544
|
@ -9,6 +9,10 @@ TODO
|
|||
- Use a timeout / ulimit
|
||||
- Detect signaled failures (abort)
|
||||
- Better support for finding tests
|
||||
|
||||
- Support "disabling" tests? The advantage of making this distinct from XFAIL
|
||||
is it makes it more obvious that it is a temporary measure (and MTR can put
|
||||
in a separate category).
|
||||
"""
|
||||
|
||||
# TOD
|
||||
|
@ -157,7 +161,8 @@ class Tester(threading.Thread):
|
|||
else:
|
||||
startTime = time.time()
|
||||
code, output = TestRunner.runOneTest(path, base,
|
||||
opts.clang, opts.clangcc)
|
||||
opts.clang, opts.clangcc,
|
||||
opts.useValgrind)
|
||||
elapsed = time.time() - startTime
|
||||
except KeyboardInterrupt:
|
||||
# This is a sad hack. Unfortunately subprocess goes
|
||||
|
@ -242,9 +247,6 @@ def main():
|
|||
|
||||
if not args:
|
||||
parser.error('No inputs specified')
|
||||
if opts.useValgrind:
|
||||
parser.error('Support for running with valgrind is '
|
||||
'temporarily disabled')
|
||||
|
||||
# FIXME: Move into configuration object.
|
||||
TestRunner.kChildEnv["PATH"] = os.pathsep.join(opts.path +
|
||||
|
|
|
@ -57,7 +57,7 @@ def mkdir_p(path):
|
|||
if e.errno != errno.EEXIST:
|
||||
raise
|
||||
|
||||
def executeScript(script, commands, cwd):
|
||||
def executeScript(script, commands, cwd, useValgrind):
|
||||
# Write script file
|
||||
f = open(script,'w')
|
||||
if kSystemName == 'Windows':
|
||||
|
@ -71,6 +71,12 @@ def executeScript(script, commands, cwd):
|
|||
command = ['cmd','/c', script]
|
||||
else:
|
||||
command = ['/bin/sh', script]
|
||||
if useValgrind:
|
||||
# FIXME: Running valgrind on sh is overkill. We probably could just
|
||||
# ron on clang with no real loss.
|
||||
command = ['valgrind', '-q',
|
||||
'--tool=memcheck', '--leak-check=no', '--trace-children=yes',
|
||||
'--error-exitcode=123'] + command
|
||||
|
||||
p = subprocess.Popen(command, cwd=cwd,
|
||||
stdin=subprocess.PIPE,
|
||||
|
@ -87,7 +93,7 @@ def executeScript(script, commands, cwd):
|
|||
return out, err, exitCode
|
||||
|
||||
import StringIO
|
||||
def runOneTest(testPath, tmpBase, clang, clangcc):
|
||||
def runOneTest(testPath, tmpBase, clang, clangcc, useValgrind):
|
||||
# Make paths absolute.
|
||||
tmpBase = os.path.abspath(tmpBase)
|
||||
testPath = os.path.abspath(testPath)
|
||||
|
@ -149,7 +155,8 @@ def runOneTest(testPath, tmpBase, clang, clangcc):
|
|||
scriptLines[i] = ln[:-2]
|
||||
|
||||
out, err, exitCode = executeScript(script, scriptLines,
|
||||
cwd=os.path.dirname(testPath))
|
||||
os.path.dirname(testPath),
|
||||
useValgrind)
|
||||
if xfailLines:
|
||||
ok = exitCode != 0
|
||||
status = (TestStatus.XPass, TestStatus.XFail)[ok]
|
||||
|
|
Загрузка…
Ссылка в новой задаче