[lit] Move executeCommand() into lit.util.
authorDaniel Dunbar <daniel@zuster.org>
Wed, 14 Aug 2013 05:07:01 +0000 (05:07 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Wed, 14 Aug 2013 05:07:01 +0000 (05:07 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188356 91177308-0d34-0410-b5e6-96231b3b80d8

utils/lit/lit/TestRunner.py
utils/lit/lit/formats/base.py
utils/lit/lit/formats/googletest.py
utils/lit/lit/util.py

index a8150e6240933f91a1ef57581ddbfe9555992ea8..54bbd68893426737f9ada540ec18ac266233eabd 100644 (file)
@@ -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.
index 3c38041b1119950689f39309decfd49fc4966dc3..b384ec2f0ce962ed60fb20c79dbacf3cd22b7170 100644 (file)
@@ -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():
index 06b6a298638408b4e4ccca382612a4f253516960..8465a0b90905ab216689208aaa124e0f4708a108 100644 (file)
@@ -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:
index d7d6d7f16320739a052794d112344d36b5a0c709..ce26f06d6d969b0797fb319fa9e98b007fb03176 100644 (file)
@@ -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