From 493e8d4bf503c8f573e0dce95ea146d181c623c6 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Wed, 14 Aug 2013 05:07:01 +0000 Subject: [PATCH] [lit] Move executeCommand() into lit.util. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@188356 91177308-0d34-0410-b5e6-96231b3b80d8 --- utils/lit/lit/TestRunner.py | 22 ++-------------------- utils/lit/lit/formats/base.py | 3 +-- utils/lit/lit/formats/googletest.py | 2 +- utils/lit/lit/util.py | 19 +++++++++++++++++++ 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/utils/lit/lit/TestRunner.py b/utils/lit/lit/TestRunner.py index a8150e62409..54bbd688934 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 3c38041b111..b384ec2f0ce 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 06b6a298638..8465a0b9090 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 d7d6d7f1632..ce26f06d6d9 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 -- 2.34.1