diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2016-10-02 17:55:51 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2016-10-02 17:55:51 +0200 |
commit | c4cf542c575068d55368e771abf6c358bfebf5d3 (patch) | |
tree | b916ff4bea0671437b80257fa82283ad8e09faab /shell/ash_test/ash-redir/redir_script.tests | |
parent | 1b73f8471a3694d2e6b035bb7f04e1f4df943f03 (diff) |
sh testsuite: create hush-redir/* and move files around
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell/ash_test/ash-redir/redir_script.tests')
-rwxr-xr-x | shell/ash_test/ash-redir/redir_script.tests | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/shell/ash_test/ash-redir/redir_script.tests b/shell/ash_test/ash-redir/redir_script.tests new file mode 100755 index 000000000..ccc497d7b --- /dev/null +++ b/shell/ash_test/ash-redir/redir_script.tests @@ -0,0 +1,29 @@ +# Builds a " 3>&- 4>&-" string. +# Note: one of these fds is a directory opened to /proc/self/fd +# for globbing. It is unwanted, but I don't know how to filter it out. +find_fds() { + fds="" + for f in /proc/self/fd/*; do + test "$f" = "/proc/self/fd/0" && continue + test "$f" = "/proc/self/fd/1" && continue + test "$f" = "/proc/self/fd/2" && continue + fds="$fds ${f##*/}>&-" + done +} + +find_fds +fds1="$fds" + +# One of the fds is open to the script body +# Close it while executing something. +eval "find_fds $fds" + +# Shell should not lose that fd. Did it? +find_fds +test x"$fds1" = x"$fds" && { echo "Ok: script fd is not closed"; exit 0; } + +echo "Bug: script fd is closed" +echo "fds1:$fds1" +echo "fds2:$fds" +exit 1 + |