diff options
| author | Mircea Trofin <mtrofin@google.com> | 2018-03-26 22:41:06 +0000 |
|---|---|---|
| committer | Mircea Trofin <mtrofin@google.com> | 2018-03-26 22:41:06 +0000 |
| commit | 88911686c83a0235f2360cd58f2ee34727977576 (patch) | |
| tree | 8549e00f1aa30a51736c6ab904d71bf85f7a06c6 | |
| parent | 9345d982d0e785d8238d00a486bbfb8499c4d471 (diff) | |
| download | bcm5719-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.test | 2 | ||||
| -rw-r--r-- | llvm/utils/lit/lit/TestRunner.py | 7 | ||||
| -rw-r--r-- | llvm/utils/lit/tests/Inputs/shtest-shell/check_args.py | 14 | ||||
| -rw-r--r-- | llvm/utils/lit/tests/Inputs/shtest-shell/dev-null.txt | 14 |
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 |

