diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2018-04-11 20:24:58 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2018-04-11 20:24:58 +0200 |
commit | 46158dc833ca48a63a2547bb26eee133aa19dccf (patch) | |
tree | d4688317331645dbeaea1387f5fb85fbb0f5cee4 /shell | |
parent | f693b606b732437bb1265c2ec883d93127f3f38e (diff) | |
download | busybox-w32-46158dc833ca48a63a2547bb26eee133aa19dccf.tar.gz busybox-w32-46158dc833ca48a63a2547bb26eee133aa19dccf.tar.bz2 busybox-w32-46158dc833ca48a63a2547bb26eee133aa19dccf.zip |
shell: add 6856 $IFS tests to testsuites
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'shell')
-rw-r--r-- | shell/ash_test/ash-z_slow/many_ifs.right | 1 | ||||
-rwxr-xr-x | shell/ash_test/ash-z_slow/many_ifs.tests | 257 | ||||
-rw-r--r-- | shell/hush_test/hush-z_slow/many_ifs.right | 1 | ||||
-rwxr-xr-x | shell/hush_test/hush-z_slow/many_ifs.tests | 257 |
4 files changed, 516 insertions, 0 deletions
diff --git a/shell/ash_test/ash-z_slow/many_ifs.right b/shell/ash_test/ash-z_slow/many_ifs.right new file mode 100644 index 000000000..f3bdccc6c --- /dev/null +++ b/shell/ash_test/ash-z_slow/many_ifs.right | |||
@@ -0,0 +1 @@ | |||
# tests 6856 passed 6856 failed 0 | |||
diff --git a/shell/ash_test/ash-z_slow/many_ifs.tests b/shell/ash_test/ash-z_slow/many_ifs.tests new file mode 100755 index 000000000..1f5b1b3a6 --- /dev/null +++ b/shell/ash_test/ash-z_slow/many_ifs.tests | |||
@@ -0,0 +1,257 @@ | |||
1 | # Usage: $SHELL ifs.sh | ||
2 | # | ||
3 | # This script generates 6856 tests for the set(1) and read(1) | ||
4 | # builtins w.r.t. IFS whitespace and non-whitespace characters. | ||
5 | # Each failed test produces one line on the standard output that | ||
6 | # contains the test along with the expected and actual results. | ||
7 | # The last output line contains the test result counts. ordered>0 | ||
8 | # are the number of tests where IFS=": " produced different results | ||
9 | # than IFS=" :". If a test fails the same way for IFS=": " and | ||
10 | # IFS=" :" then the second output line is suppressed. | ||
11 | |||
12 | TESTS=6856 | ||
13 | |||
14 | ksh_read=0 | ||
15 | echo 1 | read ksh_read | ||
16 | ksh_arith=0 | ||
17 | eval '((ksh_arith+=1))' 2>/dev/null | ||
18 | |||
19 | failed=0 | ||
20 | ordered=0 | ||
21 | passed=0 | ||
22 | |||
23 | split() | ||
24 | { | ||
25 | i=$1 s=$2 r=$3 S='' R='' | ||
26 | for ifs in ': ' ' :' | ||
27 | do IFS=$ifs | ||
28 | set x $i | ||
29 | shift | ||
30 | IFS=' ' | ||
31 | g="[$#]" | ||
32 | while : | ||
33 | do case $# in | ||
34 | 0) break ;; | ||
35 | esac | ||
36 | g="$g($1)" | ||
37 | shift | ||
38 | done | ||
39 | case $g in | ||
40 | "$s") case $ksh_arith in | ||
41 | 1) ((passed+=1)) ;; | ||
42 | *) passed=`expr $passed + 1` ;; | ||
43 | esac | ||
44 | case $S in | ||
45 | '') S=$g | ||
46 | ;; | ||
47 | "$g") ;; | ||
48 | *) case $ksh_arith in | ||
49 | 1) ((ordered+=1)) ;; | ||
50 | *) ordered=`expr $ordered + 1` ;; | ||
51 | esac | ||
52 | ;; | ||
53 | esac | ||
54 | ;; | ||
55 | "$S") case $ksh_arith in | ||
56 | 1) ((failed+=1)) ;; | ||
57 | *) failed=`expr $failed + 1` ;; | ||
58 | esac | ||
59 | ;; | ||
60 | *) case $ksh_arith in | ||
61 | 1) ((failed+=1)) ;; | ||
62 | *) failed=`expr $failed + 1` ;; | ||
63 | esac | ||
64 | case $s in | ||
65 | "$S") ;; | ||
66 | ?0*) echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#]\" # expected \"$s\" got \"$g\"" ;; | ||
67 | ?1*) echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#](\$1)\" # expected \"$s\" got \"$g\"" ;; | ||
68 | ?2*) echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#](\$1)(\$2)\" # expected \"$s\" got \"$g\"" ;; | ||
69 | ?3*) echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#](\$1)(\$2)(\$3)\" # expected \"$s\" got \"$g\"" ;; | ||
70 | *) echo TEST ERROR i="'$i'" s="'$s'" ;; | ||
71 | esac | ||
72 | case $S in | ||
73 | '') S=$g | ||
74 | ;; | ||
75 | "$g") ;; | ||
76 | *) case $ksh_arith in | ||
77 | 1) ((ordered+=1)) ;; | ||
78 | *) ordered=`expr $ordered + 1` ;; | ||
79 | esac | ||
80 | ;; | ||
81 | esac | ||
82 | esac | ||
83 | case $ksh_read in | ||
84 | 1) echo "$i" | IFS=$ifs read x y; g="($x)($y)" ;; | ||
85 | *) g=`export ifs; echo "$i" | ( IFS=$ifs; read x y; echo "($x)($y)" )` ;; | ||
86 | esac | ||
87 | case $g in | ||
88 | "$r") case $ksh_arith in | ||
89 | 1) ((passed+=1)) ;; | ||
90 | *) passed=`expr $passed + 1` ;; | ||
91 | esac | ||
92 | case $R in | ||
93 | '') R=$g | ||
94 | ;; | ||
95 | "$g") ;; | ||
96 | *) case $ksh_arith in | ||
97 | 1) ((ordered+=1)) ;; | ||
98 | *) ordered=`expr $ordered + 1` ;; | ||
99 | esac | ||
100 | ;; | ||
101 | esac | ||
102 | ;; | ||
103 | "$R") case $ksh_arith in | ||
104 | 1) ((failed+=1)) ;; | ||
105 | *) failed=`expr $failed + 1` ;; | ||
106 | esac | ||
107 | ;; | ||
108 | *) case $ksh_arith in | ||
109 | 1) ((failed+=1)) ;; | ||
110 | *) failed=`expr $failed + 1` ;; | ||
111 | esac | ||
112 | case $r in | ||
113 | "$R") ;; | ||
114 | *) echo "echo \"$i\" | ( IFS=\"$ifs\" read x y; echo \"(\$x)(\$y)\" ) # expected \"$r\" got \"$g\"" ;; | ||
115 | esac | ||
116 | case $R in | ||
117 | '') R=$g | ||
118 | ;; | ||
119 | "$g") ;; | ||
120 | *) case $ksh_arith in | ||
121 | 1) ((ordered+=1)) ;; | ||
122 | *) ordered=`expr $ordered + 1` ;; | ||
123 | esac | ||
124 | ;; | ||
125 | esac | ||
126 | ;; | ||
127 | esac | ||
128 | done | ||
129 | } | ||
130 | |||
131 | for str in \ | ||
132 | '-' \ | ||
133 | 'a' \ | ||
134 | '- -' \ | ||
135 | '- a' \ | ||
136 | 'a -' \ | ||
137 | 'a b' \ | ||
138 | '- - -' \ | ||
139 | '- - a' \ | ||
140 | '- a -' \ | ||
141 | '- a b' \ | ||
142 | 'a - -' \ | ||
143 | 'a - b' \ | ||
144 | 'a b -' \ | ||
145 | 'a b c' \ | ||
146 | |||
147 | do | ||
148 | IFS=' ' | ||
149 | set x $str | ||
150 | |||
151 | shift | ||
152 | case $# in | ||
153 | 0) continue ;; | ||
154 | esac | ||
155 | |||
156 | f1=$1 | ||
157 | case $f1 in | ||
158 | '-') f1='' ;; | ||
159 | esac | ||
160 | |||
161 | shift | ||
162 | case $# in | ||
163 | 0) for d0 in '' ' ' | ||
164 | do | ||
165 | for d1 in '' ' ' ':' ' :' ': ' ' : ' | ||
166 | do | ||
167 | case $f1$d1 in | ||
168 | '') split "$d0$f1$d1" "[0]" "()()" ;; | ||
169 | ' ') ;; | ||
170 | *) split "$d0$f1$d1" "[1]($f1)" "($f1)()" ;; | ||
171 | esac | ||
172 | done | ||
173 | done | ||
174 | continue | ||
175 | ;; | ||
176 | esac | ||
177 | f2=$1 | ||
178 | case $f2 in | ||
179 | '-') f2='' ;; | ||
180 | esac | ||
181 | |||
182 | shift | ||
183 | case $# in | ||
184 | 0) for d0 in '' ' ' | ||
185 | do | ||
186 | for d1 in ' ' ':' ' :' ': ' ' : ' | ||
187 | do | ||
188 | case ' ' in | ||
189 | $f1$d1|$d1$f2) continue ;; | ||
190 | esac | ||
191 | for d2 in '' ' ' ':' ' :' ': ' ' : ' | ||
192 | do | ||
193 | case $f2$d2 in | ||
194 | '') split "$d0$f1$d1$f2$d2" "[1]($f1)" "($f1)()" ;; | ||
195 | ' ') ;; | ||
196 | *) split "$d0$f1$d1$f2$d2" "[2]($f1)($f2)" "($f1)($f2)" ;; | ||
197 | esac | ||
198 | done | ||
199 | done | ||
200 | done | ||
201 | continue | ||
202 | ;; | ||
203 | esac | ||
204 | f3=$1 | ||
205 | case $f3 in | ||
206 | '-') f3='' ;; | ||
207 | esac | ||
208 | |||
209 | shift | ||
210 | case $# in | ||
211 | 0) for d0 in '' ' ' | ||
212 | do | ||
213 | for d1 in ':' ' :' ': ' ' : ' | ||
214 | do | ||
215 | case ' ' in | ||
216 | $f1$d1|$d1$f2) continue ;; | ||
217 | esac | ||
218 | for d2 in ' ' ':' ' :' ': ' ' : ' | ||
219 | do | ||
220 | case $f2$d2 in | ||
221 | ' ') continue ;; | ||
222 | esac | ||
223 | case ' ' in | ||
224 | $f2$d2|$d2$f3) continue ;; | ||
225 | esac | ||
226 | for d3 in '' ' ' ':' ' :' ': ' ' : ' | ||
227 | do | ||
228 | case $f3$d3 in | ||
229 | '') split "$d0$f1$d1$f2$d2$f3$d3" "[2]($f1)($f2)" "($f1)($f2)" ;; | ||
230 | ' ') ;; | ||
231 | *) x=$f2$d2$f3$d3 | ||
232 | x=${x# } #was x=${x#' '} hush needs fixing for this to work | ||
233 | x=${x% } #was x=${x%' '} | ||
234 | split "$d0$f1$d1$f2$d2$f3$d3" "[3]($f1)($f2)($f3)" "($f1)($x)" | ||
235 | ;; | ||
236 | esac | ||
237 | done | ||
238 | done | ||
239 | done | ||
240 | done | ||
241 | continue | ||
242 | ;; | ||
243 | esac | ||
244 | done | ||
245 | case $ksh_arith in | ||
246 | 1) ((tests=passed+failed)) ;; | ||
247 | *) tests=`expr $passed + $failed` ;; | ||
248 | esac | ||
249 | case $ordered in | ||
250 | 0) ordered="" ;; | ||
251 | *) ordered=" ordered $ordered" ;; | ||
252 | esac | ||
253 | case $tests in | ||
254 | $TESTS) fatal="" ;; | ||
255 | *) fatal=" -- fundamental IFS error -- $TESTS tests expected" | ||
256 | esac | ||
257 | echo "# tests $tests passed $passed failed $failed$ordered$fatal" | ||
diff --git a/shell/hush_test/hush-z_slow/many_ifs.right b/shell/hush_test/hush-z_slow/many_ifs.right new file mode 100644 index 000000000..f3bdccc6c --- /dev/null +++ b/shell/hush_test/hush-z_slow/many_ifs.right | |||
@@ -0,0 +1 @@ | |||
# tests 6856 passed 6856 failed 0 | |||
diff --git a/shell/hush_test/hush-z_slow/many_ifs.tests b/shell/hush_test/hush-z_slow/many_ifs.tests new file mode 100755 index 000000000..1f5b1b3a6 --- /dev/null +++ b/shell/hush_test/hush-z_slow/many_ifs.tests | |||
@@ -0,0 +1,257 @@ | |||
1 | # Usage: $SHELL ifs.sh | ||
2 | # | ||
3 | # This script generates 6856 tests for the set(1) and read(1) | ||
4 | # builtins w.r.t. IFS whitespace and non-whitespace characters. | ||
5 | # Each failed test produces one line on the standard output that | ||
6 | # contains the test along with the expected and actual results. | ||
7 | # The last output line contains the test result counts. ordered>0 | ||
8 | # are the number of tests where IFS=": " produced different results | ||
9 | # than IFS=" :". If a test fails the same way for IFS=": " and | ||
10 | # IFS=" :" then the second output line is suppressed. | ||
11 | |||
12 | TESTS=6856 | ||
13 | |||
14 | ksh_read=0 | ||
15 | echo 1 | read ksh_read | ||
16 | ksh_arith=0 | ||
17 | eval '((ksh_arith+=1))' 2>/dev/null | ||
18 | |||
19 | failed=0 | ||
20 | ordered=0 | ||
21 | passed=0 | ||
22 | |||
23 | split() | ||
24 | { | ||
25 | i=$1 s=$2 r=$3 S='' R='' | ||
26 | for ifs in ': ' ' :' | ||
27 | do IFS=$ifs | ||
28 | set x $i | ||
29 | shift | ||
30 | IFS=' ' | ||
31 | g="[$#]" | ||
32 | while : | ||
33 | do case $# in | ||
34 | 0) break ;; | ||
35 | esac | ||
36 | g="$g($1)" | ||
37 | shift | ||
38 | done | ||
39 | case $g in | ||
40 | "$s") case $ksh_arith in | ||
41 | 1) ((passed+=1)) ;; | ||
42 | *) passed=`expr $passed + 1` ;; | ||
43 | esac | ||
44 | case $S in | ||
45 | '') S=$g | ||
46 | ;; | ||
47 | "$g") ;; | ||
48 | *) case $ksh_arith in | ||
49 | 1) ((ordered+=1)) ;; | ||
50 | *) ordered=`expr $ordered + 1` ;; | ||
51 | esac | ||
52 | ;; | ||
53 | esac | ||
54 | ;; | ||
55 | "$S") case $ksh_arith in | ||
56 | 1) ((failed+=1)) ;; | ||
57 | *) failed=`expr $failed + 1` ;; | ||
58 | esac | ||
59 | ;; | ||
60 | *) case $ksh_arith in | ||
61 | 1) ((failed+=1)) ;; | ||
62 | *) failed=`expr $failed + 1` ;; | ||
63 | esac | ||
64 | case $s in | ||
65 | "$S") ;; | ||
66 | ?0*) echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#]\" # expected \"$s\" got \"$g\"" ;; | ||
67 | ?1*) echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#](\$1)\" # expected \"$s\" got \"$g\"" ;; | ||
68 | ?2*) echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#](\$1)(\$2)\" # expected \"$s\" got \"$g\"" ;; | ||
69 | ?3*) echo "IFS=\"$ifs\"; x=\"$i\"; set x \$x; shift; echo \"[\$#](\$1)(\$2)(\$3)\" # expected \"$s\" got \"$g\"" ;; | ||
70 | *) echo TEST ERROR i="'$i'" s="'$s'" ;; | ||
71 | esac | ||
72 | case $S in | ||
73 | '') S=$g | ||
74 | ;; | ||
75 | "$g") ;; | ||
76 | *) case $ksh_arith in | ||
77 | 1) ((ordered+=1)) ;; | ||
78 | *) ordered=`expr $ordered + 1` ;; | ||
79 | esac | ||
80 | ;; | ||
81 | esac | ||
82 | esac | ||
83 | case $ksh_read in | ||
84 | 1) echo "$i" | IFS=$ifs read x y; g="($x)($y)" ;; | ||
85 | *) g=`export ifs; echo "$i" | ( IFS=$ifs; read x y; echo "($x)($y)" )` ;; | ||
86 | esac | ||
87 | case $g in | ||
88 | "$r") case $ksh_arith in | ||
89 | 1) ((passed+=1)) ;; | ||
90 | *) passed=`expr $passed + 1` ;; | ||
91 | esac | ||
92 | case $R in | ||
93 | '') R=$g | ||
94 | ;; | ||
95 | "$g") ;; | ||
96 | *) case $ksh_arith in | ||
97 | 1) ((ordered+=1)) ;; | ||
98 | *) ordered=`expr $ordered + 1` ;; | ||
99 | esac | ||
100 | ;; | ||
101 | esac | ||
102 | ;; | ||
103 | "$R") case $ksh_arith in | ||
104 | 1) ((failed+=1)) ;; | ||
105 | *) failed=`expr $failed + 1` ;; | ||
106 | esac | ||
107 | ;; | ||
108 | *) case $ksh_arith in | ||
109 | 1) ((failed+=1)) ;; | ||
110 | *) failed=`expr $failed + 1` ;; | ||
111 | esac | ||
112 | case $r in | ||
113 | "$R") ;; | ||
114 | *) echo "echo \"$i\" | ( IFS=\"$ifs\" read x y; echo \"(\$x)(\$y)\" ) # expected \"$r\" got \"$g\"" ;; | ||
115 | esac | ||
116 | case $R in | ||
117 | '') R=$g | ||
118 | ;; | ||
119 | "$g") ;; | ||
120 | *) case $ksh_arith in | ||
121 | 1) ((ordered+=1)) ;; | ||
122 | *) ordered=`expr $ordered + 1` ;; | ||
123 | esac | ||
124 | ;; | ||
125 | esac | ||
126 | ;; | ||
127 | esac | ||
128 | done | ||
129 | } | ||
130 | |||
131 | for str in \ | ||
132 | '-' \ | ||
133 | 'a' \ | ||
134 | '- -' \ | ||
135 | '- a' \ | ||
136 | 'a -' \ | ||
137 | 'a b' \ | ||
138 | '- - -' \ | ||
139 | '- - a' \ | ||
140 | '- a -' \ | ||
141 | '- a b' \ | ||
142 | 'a - -' \ | ||
143 | 'a - b' \ | ||
144 | 'a b -' \ | ||
145 | 'a b c' \ | ||
146 | |||
147 | do | ||
148 | IFS=' ' | ||
149 | set x $str | ||
150 | |||
151 | shift | ||
152 | case $# in | ||
153 | 0) continue ;; | ||
154 | esac | ||
155 | |||
156 | f1=$1 | ||
157 | case $f1 in | ||
158 | '-') f1='' ;; | ||
159 | esac | ||
160 | |||
161 | shift | ||
162 | case $# in | ||
163 | 0) for d0 in '' ' ' | ||
164 | do | ||
165 | for d1 in '' ' ' ':' ' :' ': ' ' : ' | ||
166 | do | ||
167 | case $f1$d1 in | ||
168 | '') split "$d0$f1$d1" "[0]" "()()" ;; | ||
169 | ' ') ;; | ||
170 | *) split "$d0$f1$d1" "[1]($f1)" "($f1)()" ;; | ||
171 | esac | ||
172 | done | ||
173 | done | ||
174 | continue | ||
175 | ;; | ||
176 | esac | ||
177 | f2=$1 | ||
178 | case $f2 in | ||
179 | '-') f2='' ;; | ||
180 | esac | ||
181 | |||
182 | shift | ||
183 | case $# in | ||
184 | 0) for d0 in '' ' ' | ||
185 | do | ||
186 | for d1 in ' ' ':' ' :' ': ' ' : ' | ||
187 | do | ||
188 | case ' ' in | ||
189 | $f1$d1|$d1$f2) continue ;; | ||
190 | esac | ||
191 | for d2 in '' ' ' ':' ' :' ': ' ' : ' | ||
192 | do | ||
193 | case $f2$d2 in | ||
194 | '') split "$d0$f1$d1$f2$d2" "[1]($f1)" "($f1)()" ;; | ||
195 | ' ') ;; | ||
196 | *) split "$d0$f1$d1$f2$d2" "[2]($f1)($f2)" "($f1)($f2)" ;; | ||
197 | esac | ||
198 | done | ||
199 | done | ||
200 | done | ||
201 | continue | ||
202 | ;; | ||
203 | esac | ||
204 | f3=$1 | ||
205 | case $f3 in | ||
206 | '-') f3='' ;; | ||
207 | esac | ||
208 | |||
209 | shift | ||
210 | case $# in | ||
211 | 0) for d0 in '' ' ' | ||
212 | do | ||
213 | for d1 in ':' ' :' ': ' ' : ' | ||
214 | do | ||
215 | case ' ' in | ||
216 | $f1$d1|$d1$f2) continue ;; | ||
217 | esac | ||
218 | for d2 in ' ' ':' ' :' ': ' ' : ' | ||
219 | do | ||
220 | case $f2$d2 in | ||
221 | ' ') continue ;; | ||
222 | esac | ||
223 | case ' ' in | ||
224 | $f2$d2|$d2$f3) continue ;; | ||
225 | esac | ||
226 | for d3 in '' ' ' ':' ' :' ': ' ' : ' | ||
227 | do | ||
228 | case $f3$d3 in | ||
229 | '') split "$d0$f1$d1$f2$d2$f3$d3" "[2]($f1)($f2)" "($f1)($f2)" ;; | ||
230 | ' ') ;; | ||
231 | *) x=$f2$d2$f3$d3 | ||
232 | x=${x# } #was x=${x#' '} hush needs fixing for this to work | ||
233 | x=${x% } #was x=${x%' '} | ||
234 | split "$d0$f1$d1$f2$d2$f3$d3" "[3]($f1)($f2)($f3)" "($f1)($x)" | ||
235 | ;; | ||
236 | esac | ||
237 | done | ||
238 | done | ||
239 | done | ||
240 | done | ||
241 | continue | ||
242 | ;; | ||
243 | esac | ||
244 | done | ||
245 | case $ksh_arith in | ||
246 | 1) ((tests=passed+failed)) ;; | ||
247 | *) tests=`expr $passed + $failed` ;; | ||
248 | esac | ||
249 | case $ordered in | ||
250 | 0) ordered="" ;; | ||
251 | *) ordered=" ordered $ordered" ;; | ||
252 | esac | ||
253 | case $tests in | ||
254 | $TESTS) fatal="" ;; | ||
255 | *) fatal=" -- fundamental IFS error -- $TESTS tests expected" | ||
256 | esac | ||
257 | echo "# tests $tests passed $passed failed $failed$ordered$fatal" | ||