mirror of
https://https.git.savannah.gnu.org/git/bash.git
synced 2026-08-07 18:52:35 +02:00
commit bash-20050901 snapshot
This commit is contained in:
@@ -0,0 +1 @@
|
||||
# tests 6856 passed 6856 failed 0
|
||||
@@ -0,0 +1,257 @@
|
||||
# Usage: $SHELL ifs.sh
|
||||
#
|
||||
# This script generates 6856 tests for the set(1) and read(1)
|
||||
# builtins w.r.t. IFS whitespace and non-whitespace characters.
|
||||
# Each failed test produces one line on the standard output that
|
||||
# contains the test along with the expected and actual results.
|
||||
# The last output line contains the test result counts. ordered>0
|
||||
# are the number of tests where IFS=": " produced different results
|
||||
# than IFS=" :". If a test fails the same way for IFS=": " and
|
||||
# IFS=" :" then the second output line is suppressed.
|
||||
|
||||
TESTS=6856
|
||||
|
||||
ksh_read=0
|
||||
echo 1 | read ksh_read
|
||||
ksh_arith=0
|
||||
eval '((ksh_arith+=1))' 2>/dev/null
|
||||
|
||||
failed=0
|
||||
ordered=0
|
||||
passed=0
|
||||
|
||||
split()
|
||||
{
|
||||
i=$1 s=$2 r=$3 S='' R=''
|
||||
for ifs in ': ' ' :'
|
||||
do IFS=$ifs
|
||||
set x $i
|
||||
shift
|
||||
IFS=' '
|
||||
g="[$#]"
|
||||
while :
|
||||
do case $# in
|
||||
0) break ;;
|
||||
esac
|
||||
g="$g($1)"
|
||||
shift
|
||||
done
|
||||
case $g in
|
||||
"$s") case $ksh_arith in
|
||||
1) ((passed+=1)) ;;
|
||||
*) passed=`expr $passed + 1` ;;
|
||||
esac
|
||||
case $S in
|
||||
'') S=$g
|
||||
;;
|
||||
"$g") ;;
|
||||
*) case $ksh_arith in
|
||||
1) ((ordered+=1)) ;;
|
||||
*) ordered=`expr $ordered + 1` ;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
"$S") case $ksh_arith in
|
||||
1) ((failed+=1)) ;;
|
||||
*) failed=`expr $failed + 1` ;;
|
||||
esac
|
||||
;;
|
||||
*) case $ksh_arith in
|
||||
1) ((failed+=1)) ;;
|
||||
*) failed=`expr $failed + 1` ;;
|
||||
esac
|
||||
case $s in
|
||||
"$S") ;;
|
||||
?0*) echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#]\" # expected \"$s\" got \"$g\"" ;;
|
||||
?1*) echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#](\$1)\" # expected \"$s\" got \"$g\"" ;;
|
||||
?2*) echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#](\$1)(\$2)\" # expected \"$s\" got \"$g\"" ;;
|
||||
?3*) echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#](\$1)(\$2)(\$3)\" # expected \"$s\" got \"$g\"" ;;
|
||||
*) echo TEST ERROR i="'$i'" s="'$s'" ;;
|
||||
esac
|
||||
case $S in
|
||||
'') S=$g
|
||||
;;
|
||||
"$g") ;;
|
||||
*) case $ksh_arith in
|
||||
1) ((ordered+=1)) ;;
|
||||
*) ordered=`expr $ordered + 1` ;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
esac
|
||||
case $ksh_read in
|
||||
1) echo "$i" | IFS=$ifs read x y; g="($x)($y)" ;;
|
||||
*) g=`export ifs; echo "$i" | ( IFS=$ifs; read x y; echo "($x)($y)" )` ;;
|
||||
esac
|
||||
case $g in
|
||||
"$r") case $ksh_arith in
|
||||
1) ((passed+=1)) ;;
|
||||
*) passed=`expr $passed + 1` ;;
|
||||
esac
|
||||
case $R in
|
||||
'') R=$g
|
||||
;;
|
||||
"$g") ;;
|
||||
*) case $ksh_arith in
|
||||
1) ((ordered+=1)) ;;
|
||||
*) ordered=`expr $ordered + 1` ;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
"$R") case $ksh_arith in
|
||||
1) ((failed+=1)) ;;
|
||||
*) failed=`expr $failed + 1` ;;
|
||||
esac
|
||||
;;
|
||||
*) case $ksh_arith in
|
||||
1) ((failed+=1)) ;;
|
||||
*) failed=`expr $failed + 1` ;;
|
||||
esac
|
||||
case $r in
|
||||
"$R") ;;
|
||||
*) echo "echo \"$i\" | ( IFS=\"$ifs\" read x y; echo \"(\$x)(\$y)\" ) # expected \"$r\" got \"$g\"" ;;
|
||||
esac
|
||||
case $R in
|
||||
'') R=$g
|
||||
;;
|
||||
"$g") ;;
|
||||
*) case $ksh_arith in
|
||||
1) ((ordered+=1)) ;;
|
||||
*) ordered=`expr $ordered + 1` ;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
for str in \
|
||||
'-' \
|
||||
'a' \
|
||||
'- -' \
|
||||
'- a' \
|
||||
'a -' \
|
||||
'a b' \
|
||||
'- - -' \
|
||||
'- - a' \
|
||||
'- a -' \
|
||||
'- a b' \
|
||||
'a - -' \
|
||||
'a - b' \
|
||||
'a b -' \
|
||||
'a b c' \
|
||||
|
||||
do
|
||||
IFS=' '
|
||||
set x $str
|
||||
|
||||
shift
|
||||
case $# in
|
||||
0) continue ;;
|
||||
esac
|
||||
|
||||
f1=$1
|
||||
case $f1 in
|
||||
'-') f1='' ;;
|
||||
esac
|
||||
|
||||
shift
|
||||
case $# in
|
||||
0) for d0 in '' ' '
|
||||
do
|
||||
for d1 in '' ' ' ':' ' :' ': ' ' : '
|
||||
do
|
||||
case $f1$d1 in
|
||||
'') split "$d0$f1$d1" "[0]" "()()" ;;
|
||||
' ') ;;
|
||||
*) split "$d0$f1$d1" "[1]($f1)" "($f1)()" ;;
|
||||
esac
|
||||
done
|
||||
done
|
||||
continue
|
||||
;;
|
||||
esac
|
||||
f2=$1
|
||||
case $f2 in
|
||||
'-') f2='' ;;
|
||||
esac
|
||||
|
||||
shift
|
||||
case $# in
|
||||
0) for d0 in '' ' '
|
||||
do
|
||||
for d1 in ' ' ':' ' :' ': ' ' : '
|
||||
do
|
||||
case ' ' in
|
||||
$f1$d1|$d1$f2) continue ;;
|
||||
esac
|
||||
for d2 in '' ' ' ':' ' :' ': ' ' : '
|
||||
do
|
||||
case $f2$d2 in
|
||||
'') split "$d0$f1$d1$f2$d2" "[1]($f1)" "($f1)()" ;;
|
||||
' ') ;;
|
||||
*) split "$d0$f1$d1$f2$d2" "[2]($f1)($f2)" "($f1)($f2)" ;;
|
||||
esac
|
||||
done
|
||||
done
|
||||
done
|
||||
continue
|
||||
;;
|
||||
esac
|
||||
f3=$1
|
||||
case $f3 in
|
||||
'-') f3='' ;;
|
||||
esac
|
||||
|
||||
shift
|
||||
case $# in
|
||||
0) for d0 in '' ' '
|
||||
do
|
||||
for d1 in ':' ' :' ': ' ' : '
|
||||
do
|
||||
case ' ' in
|
||||
$f1$d1|$d1$f2) continue ;;
|
||||
esac
|
||||
for d2 in ' ' ':' ' :' ': ' ' : '
|
||||
do
|
||||
case $f2$d2 in
|
||||
' ') continue ;;
|
||||
esac
|
||||
case ' ' in
|
||||
$f2$d2|$d2$f3) continue ;;
|
||||
esac
|
||||
for d3 in '' ' ' ':' ' :' ': ' ' : '
|
||||
do
|
||||
case $f3$d3 in
|
||||
'') split "$d0$f1$d1$f2$d2$f3$d3" "[2]($f1)($f2)" "($f1)($f2)" ;;
|
||||
' ') ;;
|
||||
*) x=$f2$d2$f3$d3
|
||||
x=${x#' '}
|
||||
x=${x%' '}
|
||||
split "$d0$f1$d1$f2$d2$f3$d3" "[3]($f1)($f2)($f3)" "($f1)($x)"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
done
|
||||
done
|
||||
done
|
||||
continue
|
||||
;;
|
||||
esac
|
||||
done
|
||||
case $ksh_arith in
|
||||
1) ((tests=passed+failed)) ;;
|
||||
*) tests=`expr $passed + $failed` ;;
|
||||
esac
|
||||
case $ordered in
|
||||
0) ordered="" ;;
|
||||
*) ordered=" ordered $ordered" ;;
|
||||
esac
|
||||
case $tests in
|
||||
$TESTS) fatal="" ;;
|
||||
*) fatal=" -- fundamental IFS error -- $TESTS tests expected"
|
||||
esac
|
||||
echo "# tests $tests passed $passed failed $failed$ordered$fatal"
|
||||
+1
-1
@@ -56,7 +56,7 @@ fg-bg 6
|
||||
./jobs.tests: line 95: fg: -s: invalid option
|
||||
fg: usage: fg [job_spec]
|
||||
./jobs.tests: line 96: bg: -s: invalid option
|
||||
bg: usage: bg [job_spec]
|
||||
bg: usage: bg [job_spec ...]
|
||||
./jobs.tests: line 101: disown: -s: invalid option
|
||||
disown: usage: disown [-h] [-ar] [jobspec ...]
|
||||
./jobs.tests: line 105: disown: %1: no such job
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
./jobs2.sub: line 9: fg: job 1 started without job control
|
||||
fg: 1
|
||||
Waiting for job 0
|
||||
job 0 returns 0
|
||||
Waiting for job 1
|
||||
job 1 returns 0
|
||||
Waiting for job 2
|
||||
job 2 returns 0
|
||||
Waiting for job 3
|
||||
job 3 returns 0
|
||||
Waiting for job 4
|
||||
job 4 returns 0
|
||||
Waiting for job 5
|
||||
job 5 returns 0
|
||||
Waiting for job 6
|
||||
job 6 returns 0
|
||||
Waiting for job 7
|
||||
job 7 returns 0
|
||||
[1] Running sleep 5 &
|
||||
[2] Running sleep 5 &
|
||||
[3] Running sleep 5 &
|
||||
[4]- Running sleep 5 &
|
||||
[5]+ Running ( sleep 5; exit 4 ) &
|
||||
4
|
||||
0
|
||||
i killed it
|
||||
0
|
||||
./jobs.tests: line 19: wait: %1: no such job
|
||||
./jobs.tests: line 24: fg: no job control
|
||||
wait-for-pid
|
||||
wait-errors
|
||||
./jobs.tests: line 37: wait: `1-1': not a pid or valid job spec
|
||||
./jobs.tests: line 38: wait: `-4': not a pid or valid job spec
|
||||
wait-for-background-pids
|
||||
async list wait-for-background-pids
|
||||
async list wait for child
|
||||
forked
|
||||
wait-when-no-children
|
||||
wait-for-job
|
||||
./jobs.tests: line 60: wait: %2: no such job
|
||||
127
|
||||
async list wait-for-job
|
||||
forked
|
||||
fg-bg 1
|
||||
sleep 5
|
||||
fg-bg 2
|
||||
sleep 5
|
||||
fg-bg 3
|
||||
sleep 5
|
||||
fg-bg 4
|
||||
sleep 5
|
||||
fg-bg 5
|
||||
./jobs.tests: line 87: fg: %2: no such job
|
||||
./jobs.tests: line 88: bg: job 1 already in background
|
||||
fg-bg 6
|
||||
./jobs.tests: line 95: fg: -s: invalid option
|
||||
fg: usage: fg [job_spec]
|
||||
./jobs.tests: line 96: bg: -s: invalid option
|
||||
bg: usage: bg [job_spec]
|
||||
./jobs.tests: line 101: disown: -s: invalid option
|
||||
disown: usage: disown [-h] [-ar] [jobspec ...]
|
||||
./jobs.tests: line 105: disown: %1: no such job
|
||||
./jobs.tests: line 108: disown: %2: no such job
|
||||
wait-for-non-child
|
||||
./jobs.tests: line 111: wait: pid 1 is not a child of this shell
|
||||
127
|
||||
3 -- 1 2 3 -- 1 - 2 - 3
|
||||
[1] Running sleep 300 &
|
||||
[2]- Running sleep 350 &
|
||||
[3]+ Running sleep 400 &
|
||||
running jobs:
|
||||
[1] Running sleep 300 &
|
||||
[2]- Running sleep 350 &
|
||||
[3]+ Running sleep 400 &
|
||||
./jobs.tests: line 127: kill: %4: no such job
|
||||
./jobs.tests: line 129: jobs: %4: no such job
|
||||
current job:
|
||||
[3]+ Running sleep 400 &
|
||||
previous job:
|
||||
[2]- Running sleep 350 &
|
||||
after kill -STOP
|
||||
running jobs:
|
||||
[1] Running sleep 300 &
|
||||
[3]- Running sleep 400 &
|
||||
stopped jobs:
|
||||
[2]+ Stopped sleep 350
|
||||
after disown
|
||||
[2]+ Stopped sleep 350
|
||||
[3]- Running sleep 400 &
|
||||
running jobs:
|
||||
[3]- Running sleep 400 &
|
||||
stopped jobs:
|
||||
[2]+ Stopped sleep 350
|
||||
after kill -s CONT
|
||||
running jobs:
|
||||
[2]+ Running sleep 350 &
|
||||
[3]- Running sleep 400 &
|
||||
stopped jobs:
|
||||
after kill -STOP, backgrounding %3:
|
||||
[3]+ sleep 400 &
|
||||
killing...
|
||||
done
|
||||
after KILL -STOP, foregrounding %1
|
||||
sleep 10
|
||||
done
|
||||
@@ -0,0 +1,2 @@
|
||||
${THIS_SH} ./ifs-posix.tests > /tmp/xx 2>&1
|
||||
diff /tmp/xx ifs-posix.right && rm -f /tmp/xx
|
||||
+1
-1
@@ -27,7 +27,7 @@ do
|
||||
*.orig|*~) ;;
|
||||
run-dollars|run-execscript|run-func|run-getopts|run-heredoc) echo $x ; sh $x ;;
|
||||
run-ifs-tests|run-input-test|run-invert|run-more-exp|run-nquote) echo $x ; sh $x ;;
|
||||
run-posix2|run-posixpat) echo $x ; sh $x ;;
|
||||
run-ifs-0posix|run-posix2|run-posixpat) echo $x ; sh $x ;;
|
||||
run-precedence|run-quote|run-read|run-rhs-exp|run-strip|run-tilde) echo $x ; sh $x ;;
|
||||
*) ;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user