summaryrefslogtreecommitdiff
path: root/utils/lit
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2013-08-14 05:07:01 +0000
committerDaniel Dunbar <daniel@zuster.org>2013-08-14 05:07:01 +0000
commit493e8d4bf503c8f573e0dce95ea146d181c623c6 (patch)
treebb6ceaad3464b57beec96a024de6e9b67d44080a /utils/lit
parentf76c664f6bfe8a2184f500afbb9ae851e2e34987 (diff)
downloadllvm-493e8d4bf503c8f573e0dce95ea146d181c623c6.tar.gz
llvm-493e8d4bf503c8f573e0dce95ea146d181c623c6.tar.bz2
llvm-493e8d4bf503c8f573e0dce95ea146d181c623c6.tar.xz
[lit] Move executeCommand() into lit.util.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188356 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils/lit')
-rw-r--r--utils/lit/lit/TestRunner.py22
-rw-r--r--utils/lit/lit/formats/base.py3
-rw-r--r--utils/lit/lit/formats/googletest.py2
-rw-r--r--utils/lit/lit/util.py19
4 files changed, 23 insertions, 23 deletions
diff --git a/utils/lit/lit/TestRunner.py b/utils/lit/lit/TestRunner.py
index a8150e6240..54bbd68893 100644
--- a/utils/lit/lit/TestRunner.py
+++ b/utils/lit/lit/TestRunner.py
@@ -25,25 +25,6 @@ kUseCloseFDs = not kIsWindows
# Use temporary files to replace /dev/null on Windows.
kAvoidDevNull = kIsWindows
-def executeCommand(command, cwd=None, env=None):
- # Close extra file handles on UNIX (on Windows this cannot be done while
- # also redirecting input).
- close_fds = not kIsWindows
-
- p = subprocess.Popen(command, cwd=cwd,
- stdin=subprocess.PIPE,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE,
- env=env, close_fds=close_fds)
- out,err = p.communicate()
- exitCode = p.wait()
-
- # Detect Ctrl-C in subprocess.
- if exitCode == -signal.SIGINT:
- raise KeyboardInterrupt
-
- return out, err, exitCode
-
def executeShCmd(cmd, cfg, cwd, results):
if isinstance(cmd, ShUtil.Seq):
if cmd.op == ';':
@@ -308,7 +289,8 @@ def executeScript(test, litConfig, tmpBase, commands, cwd):
# run on clang with no real loss.
command = litConfig.valgrindArgs + command
- return executeCommand(command, cwd=cwd, env=test.config.environment)
+ return lit.util.executeCommand(command, cwd=cwd,
+ env=test.config.environment)
def isExpectedFail(test, xfails):
# Check if any of the xfails match an available feature or the target.
diff --git a/utils/lit/lit/formats/base.py b/utils/lit/lit/formats/base.py
index 3c38041b11..b384ec2f0c 100644
--- a/utils/lit/lit/formats/base.py
+++ b/utils/lit/lit/formats/base.py
@@ -3,7 +3,6 @@ import os
import sys
import lit.Test
-import lit.TestRunner
import lit.util
class FileBasedTest(object):
@@ -97,7 +96,7 @@ class OneCommandPerFileTest:
else:
cmd.append(test.getSourcePath())
- out, err, exitCode = lit.TestRunner.executeCommand(cmd)
+ out, err, exitCode = lit.util.executeCommand(cmd)
diags = out + err
if not exitCode and not diags.strip():
diff --git a/utils/lit/lit/formats/googletest.py b/utils/lit/lit/formats/googletest.py
index 06b6a29863..8465a0b909 100644
--- a/utils/lit/lit/formats/googletest.py
+++ b/utils/lit/lit/formats/googletest.py
@@ -104,7 +104,7 @@ class GoogleTest(object):
if litConfig.noExecute:
return lit.Test.PASS, ''
- out, err, exitCode = lit.TestRunner.executeCommand(
+ out, err, exitCode = lit.util.executeCommand(
cmd, env=test.config.environment)
if not exitCode:
diff --git a/utils/lit/lit/util.py b/utils/lit/lit/util.py
index d7d6d7f163..ce26f06d6d 100644
--- a/utils/lit/lit/util.py
+++ b/utils/lit/lit/util.py
@@ -2,6 +2,8 @@ import errno
import itertools
import math
import os
+import platform
+import signal
import subprocess
import sys
@@ -138,3 +140,20 @@ def printHistogram(items, title = 'Items'):
pDigits, pfDigits, i*barH, pDigits, pfDigits, (i+1)*barH,
'*'*w, ' '*(barW-w), cDigits, len(row), cDigits, len(items)))
+# Close extra file handles on UNIX (on Windows this cannot be done while
+# also redirecting input).
+kUseCloseFDs = not (platform.system() == 'Windows')
+def executeCommand(command, cwd=None, env=None):
+ p = subprocess.Popen(command, cwd=cwd,
+ stdin=subprocess.PIPE,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ env=env, close_fds=kUseCloseFDs)
+ out,err = p.communicate()
+ exitCode = p.wait()
+
+ # Detect Ctrl-C in subprocess.
+ if exitCode == -signal.SIGINT:
+ raise KeyboardInterrupt
+
+ return out, err, exitCode