summaryrefslogtreecommitdiffstats
path: root/llvm/utils/lit
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/utils/lit')
-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
3 files changed, 32 insertions, 3 deletions
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