sh testsuite: create hush-redir/* and move files around
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
1b73f8471a
commit
c4cf542c57
12
shell/hush_test/hush-redir/redir1.right
Normal file
12
shell/hush_test/hush-redir/redir1.right
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
Test 0: var:ok
|
||||||
|
File created:ok
|
||||||
|
Test 1: var:ok
|
||||||
|
File created:ok
|
||||||
|
Test 2: var:ok
|
||||||
|
File created:ok
|
||||||
|
Test 3: var:ok
|
||||||
|
File created:ok
|
||||||
|
Test 4: var:ok
|
||||||
|
File created:ok
|
||||||
|
Test 5: var:ok
|
||||||
|
File created:ok
|
40
shell/hush_test/hush-redir/redir1.tests
Executable file
40
shell/hush_test/hush-redir/redir1.tests
Executable file
@ -0,0 +1,40 @@
|
|||||||
|
rm shell_test_$$ 2>/dev/null
|
||||||
|
var=bad
|
||||||
|
>shell_test_$$ var=ok
|
||||||
|
echo "Test 0: var:$var"
|
||||||
|
test -f shell_test_$$ && echo "File created:ok"
|
||||||
|
|
||||||
|
rm shell_test_$$ 2>/dev/null
|
||||||
|
var=bad
|
||||||
|
var=ok >shell_test_$$
|
||||||
|
echo "Test 1: var:$var"
|
||||||
|
test -f shell_test_$$ && echo "File created:ok"
|
||||||
|
|
||||||
|
rm shell_test_$$ 2>/dev/null
|
||||||
|
var=ok
|
||||||
|
true | var=bad >shell_test_$$
|
||||||
|
echo "Test 2: var:$var"
|
||||||
|
test -f shell_test_$$ && echo "File created:ok"
|
||||||
|
|
||||||
|
rm shell_test_$$ 2>/dev/null
|
||||||
|
var=bad
|
||||||
|
{ var=ok >shell_test_$$; }
|
||||||
|
echo "Test 3: var:$var"
|
||||||
|
test -f shell_test_$$ && echo "File created:ok"
|
||||||
|
|
||||||
|
rm shell_test_$$ 2>/dev/null
|
||||||
|
var=ok
|
||||||
|
{ var=bad >shell_test_$$; } &
|
||||||
|
# cant use usleep as it isnt standard in $PATH --
|
||||||
|
# we fail when testing busybox compiled solely as "hush"
|
||||||
|
wait
|
||||||
|
echo "Test 4: var:$var"
|
||||||
|
test -f shell_test_$$ && echo "File created:ok"
|
||||||
|
|
||||||
|
rm shell_test_$$ 2>/dev/null
|
||||||
|
var=ok
|
||||||
|
( var=bad >shell_test_$$ )
|
||||||
|
echo "Test 5: var:$var"
|
||||||
|
test -f shell_test_$$ && echo "File created:ok"
|
||||||
|
|
||||||
|
rm shell_test_$$ 2>/dev/null
|
3
shell/hush_test/hush-redir/redir7.right
Normal file
3
shell/hush_test/hush-redir/redir7.right
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
Ok
|
||||||
|
Ok
|
||||||
|
Done
|
12
shell/hush_test/hush-redir/redir7.tests
Executable file
12
shell/hush_test/hush-redir/redir7.tests
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
# Chars above 0x7f are used as special codes.
|
||||||
|
# 0x81 is CTLESC (see ash.c).
|
||||||
|
# The bug was that quoting and unquoting of them
|
||||||
|
# was out of sync for redirect filenames.
|
||||||
|
|
||||||
|
>unicode.sh
|
||||||
|
printf 'echo Ok >uni\x81code\n' >>unicode.sh
|
||||||
|
printf 'cat uni\x81code\n' >>unicode.sh
|
||||||
|
printf 'cat uni?code\n' >>unicode.sh
|
||||||
|
. ./unicode.sh
|
||||||
|
rm uni*code*
|
||||||
|
echo Done
|
3
shell/hush_test/hush-redir/redir8.right
Normal file
3
shell/hush_test/hush-redir/redir8.right
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
Ok
|
||||||
|
Ok
|
||||||
|
Done
|
15
shell/hush_test/hush-redir/redir8.tests
Executable file
15
shell/hush_test/hush-redir/redir8.tests
Executable file
@ -0,0 +1,15 @@
|
|||||||
|
# Chars above 0x7f are used as special codes.
|
||||||
|
# 0x81 is CTLESC (see ash.c).
|
||||||
|
# The bug was that quoting and unquoting of them
|
||||||
|
# was out of sync for redirect filenames.
|
||||||
|
|
||||||
|
# Subcase when redirect filename is specified in a variable.
|
||||||
|
|
||||||
|
>unicode.sh
|
||||||
|
printf 'v=uni\x81code\n' >>unicode.sh
|
||||||
|
printf 'echo Ok >"$v"\n' >>unicode.sh
|
||||||
|
printf 'cat uni\x81code\n' >>unicode.sh
|
||||||
|
printf 'cat uni?code\n' >>unicode.sh
|
||||||
|
. ./unicode.sh
|
||||||
|
rm uni*code*
|
||||||
|
echo Done
|
2
shell/hush_test/hush-redir/redir9.right
Normal file
2
shell/hush_test/hush-redir/redir9.right
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
Ok
|
||||||
|
Done:0
|
4
shell/hush_test/hush-redir/redir9.tests
Executable file
4
shell/hush_test/hush-redir/redir9.tests
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
echo Ok >file.tmp
|
||||||
|
cat 0<>file.tmp
|
||||||
|
echo Done:$?
|
||||||
|
rm file.tmp
|
2
shell/hush_test/hush-redir/redirA.right
Normal file
2
shell/hush_test/hush-redir/redirA.right
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
tmp11
|
||||||
|
tmp11
|
11
shell/hush_test/hush-redir/redirA.tests
Executable file
11
shell/hush_test/hush-redir/redirA.tests
Executable file
@ -0,0 +1,11 @@
|
|||||||
|
x="tmp11:tmp22"
|
||||||
|
|
||||||
|
# Bug was incorrectly expanding variables in >redir
|
||||||
|
echo "${x%:*}" >"${x%:*}"
|
||||||
|
echo tmp1*
|
||||||
|
rm tmp1*
|
||||||
|
|
||||||
|
# Also try unquoted
|
||||||
|
echo "${x%:*}" >${x%:*}
|
||||||
|
echo tmp1*
|
||||||
|
rm tmp1*
|
1
shell/hush_test/hush-redir/redir_script.right
Normal file
1
shell/hush_test/hush-redir/redir_script.right
Normal file
@ -0,0 +1 @@
|
|||||||
|
Ok: script fd is not closed
|
29
shell/hush_test/hush-redir/redir_script.tests
Executable file
29
shell/hush_test/hush-redir/redir_script.tests
Executable file
@ -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
|
||||||
|
|
3
shell/hush_test/hush-redir/redir_space.right
Normal file
3
shell/hush_test/hush-redir/redir_space.right
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
z1.tmp: 1
|
||||||
|
z2.tmp: 1
|
||||||
|
"z1.tmp z2.tmp": TEST 0
|
6
shell/hush_test/hush-redir/redir_space.tests
Executable file
6
shell/hush_test/hush-redir/redir_space.tests
Executable file
@ -0,0 +1,6 @@
|
|||||||
|
v='z1.tmp z2.tmp'
|
||||||
|
echo TEST >$v
|
||||||
|
echo 'z1.tmp:' `cat 'z1.tmp' 2>/dev/null; echo $?`
|
||||||
|
echo 'z2.tmp:' `cat 'z2.tmp' 2>/dev/null; echo $?`
|
||||||
|
echo '"z1.tmp z2.tmp":' `cat 'z1.tmp z2.tmp' 2>/dev/null; echo $?`
|
||||||
|
rm z*.tmp
|
Loading…
x
Reference in New Issue
Block a user