summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMircea Trofin <mtrofin@google.com>2018-03-26 22:41:06 +0000
committerMircea Trofin <mtrofin@google.com>2018-03-26 22:41:06 +0000
commit88911686c83a0235f2360cd58f2ee34727977576 (patch)
tree8549e00f1aa30a51736c6ab904d71bf85f7a06c6
parent9345d982d0e785d8238d00a486bbfb8499c4d471 (diff)
downloadbcm5719-llvm-88911686c83a0235f2360cd58f2ee34727977576.tar.gz
bcm5719-llvm-88911686c83a0235f2360cd58f2ee34727977576.zip
[lit] Generalized /dev/null support on Windows.
Generalized /dev/null remapping on Windows, and added test. Reviewers: rnk Reviewed By: rnk Subscribers: amccarth, zturner, delcypher, llvm-commits Differential Revision: https://reviews.llvm.org/D44771 llvm-svn: 328589
-rw-r--r--llvm/test/tools/llvm-profdata/invalid-profdata.test2
-rw-r--r--llvm/utils/lit/lit/TestRunner.py7
-rw-r--r--llvm/utils/lit/tests/Inputs/shtest-shell/check_args.py14
-rw-r--r--llvm/utils/lit/tests/Inputs/shtest-shell/dev-null.txt14
4 files changed, 33 insertions, 4 deletions
diff --git a/llvm/test/tools/llvm-profdata/invalid-profdata.test b/llvm/test/tools/llvm-profdata/invalid-profdata.test
index 4d6936f8a32..b6391b03464 100644
--- a/llvm/test/tools/llvm-profdata/invalid-profdata.test
+++ b/llvm/test/tools/llvm-profdata/invalid-profdata.test
@@ -20,7 +20,7 @@ RUN: echo "f2:0" >> %t.input
RUN: echo "1" >> %t.input
RUN: echo ":10" >> %t.input
-RUN: not llvm-profdata merge %t.input -text -o /dev/null 2>&1 | FileCheck %s --check-prefix=BROKEN
+RUN: not llvm-profdata merge %t.input -text -output=/dev/null 2>&1 | FileCheck %s --check-prefix=BROKEN
BROKEN: Malformed instrumentation profile data
RUN: echo ":ir" > %t.input
diff --git a/llvm/utils/lit/lit/TestRunner.py b/llvm/utils/lit/lit/TestRunner.py
index 93d5c5ba039..a2031757d8b 100644
--- a/llvm/utils/lit/lit/TestRunner.py
+++ b/llvm/utils/lit/lit/TestRunner.py
@@ -36,6 +36,7 @@ kUseCloseFDs = not kIsWindows
# Use temporary files to replace /dev/null on Windows.
kAvoidDevNull = kIsWindows
+kDevNull = "/dev/null"
class ShellEnvironment(object):
@@ -626,7 +627,7 @@ def processRedirects(cmd, stdin_source, cmd_shenv, opened_files):
raise InternalShellError(cmd, "Unsupported: glob in "
"redirect expanded to multiple files")
name = name[0]
- if kAvoidDevNull and name == '/dev/null':
+ if kAvoidDevNull and name == kDevNull:
fd = tempfile.TemporaryFile(mode=mode)
elif kIsWindows and name == '/dev/tty':
# Simulate /dev/tty on Windows.
@@ -797,11 +798,11 @@ def _executeShCmd(cmd, shenv, results, timeoutHelper):
# Replace uses of /dev/null with temporary files.
if kAvoidDevNull:
for i,arg in enumerate(args):
- if arg == "/dev/null":
+ if kDevNull in arg:
f = tempfile.NamedTemporaryFile(delete=False)
f.close()
named_temp_files.append(f.name)
- args[i] = f.name
+ args[i] = arg.replace(kDevNull, f.name)
# Expand all glob expressions
args = expand_glob_expressions(args, cmd_shenv.cwd)
diff --git a/llvm/utils/lit/tests/Inputs/shtest-shell/check_args.py b/llvm/utils/lit/tests/Inputs/shtest-shell/check_args.py
new file mode 100644
index 00000000000..2f7a2503b97
--- /dev/null
+++ b/llvm/utils/lit/tests/Inputs/shtest-shell/check_args.py
@@ -0,0 +1,14 @@
+#!/usr/bin/env python
+
+import argparse
+import platform
+
+parser = argparse.ArgumentParser()
+parser.add_argument("--my_arg", "-a")
+
+args = parser.parse_args()
+
+answer = (platform.system() == "Windows" and
+ args.my_arg == "/dev/null" and "ERROR") or "OK"
+
+print(answer)
diff --git a/llvm/utils/lit/tests/Inputs/shtest-shell/dev-null.txt b/llvm/utils/lit/tests/Inputs/shtest-shell/dev-null.txt
new file mode 100644
index 00000000000..5b742489cc8
--- /dev/null
+++ b/llvm/utils/lit/tests/Inputs/shtest-shell/dev-null.txt
@@ -0,0 +1,14 @@
+# Check handling of /dev/null in command line options
+# On windows, it should be redirected to a temp file.
+#
+# RUN: "%{python}" %S/check_args.py --my_arg /dev/null | FileCheck %s --check-prefix=CHECK1
+# CHECK1: OK
+
+# RUN: "%{python}" %S/check_args.py --my_arg=/dev/null | FileCheck %s --check-prefix=CHECK2
+# CHECK2: OK
+
+# RUN: "%{python}" %S/check_args.py -a /dev/null | FileCheck %s --check-prefix=CHECK3
+# CHECK3: OK
+
+# RUN: "%{python}" %S/check_args.py -a=/dev/null | FileCheck %s --check-prefix=CHECK4
+# CHECK4: OK
OpenPOWER on IntegriCloud