Busybox modprobe has a couple of irritating quirks:
[oweals/busybox.git] / tests / testcases
1 # testcases
2 #
3 # This file should be filled with test cases to test applets that:
4 #
5 #  - can somehow produce output (we can't test sync or sleep)
6 #  - have a GNU (or other) counterpart
7 #  - are not interactive (don't require a ^C or anything)
8 #  - don't require extensive setup or cleanup (a litte setup is fine)
9 #  - don't have huge and possibly damaging effects (fsck, swapoff)
10 #
11 # If possible, a test case should be made that tests each option the applet
12 # supports. When a new option is added, a new test case should be written for
13 # it. When somebody reports a bug with a testcase, that testcase should be
14 # added here as well.
15 #
16 # Some other guidelines to follow:
17 #
18 #  - please try to keep applets alphabetized, it will make life easier
19 #  - use the file tester.sh or testcases when you need to do a non-destructive
20 #    test on a file (i.e., cat, md5sum)
21 #  - try to make the applet you're testing the first thing on the line (this
22 #    not always possible)
23 #  - (???) if you have to create a temporary file, call it TMPFILE
24 #  - pipe symbols that represent real pipes need a space in front of them
25 #     (so the test script can find them and add the "../busybox" after it).
26 #  - pipe symbols that are not used for pipes need to be shell-escaped,
27 #     with a double \.  See the expr test cases.
28
29
30 # ar
31
32 # basename
33 basename `pwd`
34
35 # cat
36 cat tester.sh
37 echo hello there | cat tester.sh -
38
39 # chmod
40 # chown
41 # chgrp
42 # chroot
43 # chvt - can't be tested here
44 # clear - can't be tested here
45 # cmp
46 # cp
47
48 # cut
49 echo "1234" | cut -c1
50 echo "1234" | cut -c 1
51 echo "1234567890" | cut -c2-7
52 echo "1234567890" | cut -c 2-7
53 echo "f1        f2" | cut -f2
54 echo "f1        f2" | cut -f 2
55 echo "f1        f2      f3      f4      f5" | cut -f2-4
56 echo "f1        f2      f3      f4      f5" | cut -f 2-4
57
58 # date
59 date
60 date -R
61 date -u
62 date +%d/%m/%y
63
64 # dc - needs an input file
65
66 # dd
67 # BUG: record count line goes to stdout instead of stderr
68 dd if=/dev/urandom of=O bs=1k count=1 ; ls -l O ; rm O
69
70 # deallocvt
71
72 # df
73 # XXX: minor formatting differences
74 df
75 df .
76 df -k
77 df -h
78 df -m
79
80 # dirname
81 dirname `pwd`
82
83 # dmesg (XXX: change the silly cmd business in the source)
84 dmesg
85 dmesg -n 8
86 dmesg -s 512
87 # I really don't want to do this next one
88 #dmesg -c
89
90 # dos2unix - needs an input file
91 # dpkg
92 # dpkg_deb
93
94 # du
95 # BUG: rounding behavior differs from GNU du
96 du
97 du -s
98 du -l
99 du -k
100 du -h
101 du -m
102
103 # dumpkmap - no counterprt?
104 # dutmp - no counterprt?
105
106 # echo
107 echo "foo bar baz"
108 echo -n "no newline"
109
110
111 # expr
112 expr 1 \\| 1
113 expr 1 \\| 0
114 expr 0 \\| 1
115 expr 0 \\| 0
116
117 expr 1 \\& 1
118 expr 1 \\& 0
119 expr 0 \\& 1
120 expr 0 \\& 0
121
122 expr 0 \\< 1
123 expr 1 \\< 0
124
125 expr 1 \\> 0
126 expr 0 \\> 1
127
128 expr 0 \\<= 1
129 expr 1 \\<= 0
130 expr 1 \\<= 1
131
132 expr 1 \\>= 0
133 expr 0 \\>= 1
134 expr 1 \\>= 1
135
136 expr 1 + 2
137 expr 2 - 1
138 expr 2 \\* 3
139 expr 12 / 2
140 expr 12 % 5
141
142 # somebody else can do all the string stuff
143
144
145 # fbset - can't be tested here
146 # fdflush
147 # find
148 find .
149
150 # free
151 # XXX: minor formatting differences
152 free
153
154 # freeramdisk
155 # fsck.minix - won't test
156 # getopt
157
158 # grep
159 grep -l strdup ../*utils/*.c
160 grep -c strdup ../*utils/*.c
161 grep -lc strdup ../*utils/*.c
162 grep -cv strdup ../*utils/*.c
163 grep -i null ../findutils/grep.c
164 grep -e strdup -e regcomp -e atexit ../findutils/grep.c
165
166 # gunzip
167
168 # gzip
169 # XXX: compressed output differs from gzip-1.2.4, but decompresses fine
170 echo testing 1 2 3 >tmpfile1; gzip tmpfile1; echo tmpfile*; md5sum tmpfile1.gz; rm tmpfile1.gz
171 echo testing 1 2 3 | gzip >tmpfile1.gz; md5sum tmpfile1.gz; rm tmpfile1.gz
172
173
174 # halt - won't test, dangerous
175
176 # head
177 head tester.sh
178 head -n 2 tester.sh
179
180 # hostid
181 hostid
182
183 # hostname
184 # XXX: minor formatting differences
185 hostname
186 hostname -s
187 hostname -i
188 hostname -d
189 # not going to do this next one
190 #hostname -F
191
192 # id
193 # BUG: Busybox id doesn't print supplemental groups
194 id
195 id -u
196 id -g
197 id -ur
198 id -un
199
200
201 # ifconfig
202 # requires CONFIG_FEATURE_IFCONFIG_STATUS
203 ifconfig
204 #ifconfig -a
205 #ifconfig eth0
206 #ifconfig lo
207
208 # init - won't test
209 # insmod - won't test
210
211 # kill
212 #kill -l
213 # not going to do any more
214
215 # length
216 # ln - see ln_tests.mk
217 # loadacm
218 # loadfont
219 # loadkmap
220 # logger
221 # logname
222
223 # ls
224 # XXX: minor formatting differences
225 ls ../e*
226 ls -l ../e*
227 ls -s ../e*
228 ls -h ../e*
229 ls -1 ../e*
230
231 # lsmod
232 lsmod
233
234 # makedevs
235
236 # md5sum
237 md5sum tester.sh
238
239 # mkdir
240 mkdir D ; ls -ld D ; rmdir D
241
242 # mkfifo
243 #
244 # we will test making one. actually testing pushing data through it requires
245 # more interaction than we can manage here.
246 # (these lines turn up an existing ls bug)
247 mkfifo F ; ls -l F ; rm F
248 mkfifo -m 0600 F ; ls -l F ; rm F
249
250 # mkfs.minix - won't test
251 # mknod
252 # mkswap - won't test
253 # mktemp
254 # more - can't test: interactive
255
256 # mount
257 # BUG: proc line starts with /proc instead of proc
258 mount
259 # not going to test mount with any args, can't be done safely or sanely
260
261 # mt
262 # mv - see mv_tests.mk
263 # nc
264 # nfsmount
265 # nslookup
266 # ping
267 ping -c 3 yahoo.com
268 # pivot_root
269 # poweroff - won't test
270 # printf
271 # ps - there's lotsa differences between busybox ps and any other ps
272
273 # pwd
274 pwd
275
276 # rdate - won't test
277
278 # readlink
279 ln -sf tester.sh L ; readlink L ; rm -f L
280
281 # reboot - won't test
282 # renice - won't test
283 # reset - can't test: no output
284
285 # rm
286 touch F ; rm F
287
288 # rmdir
289 # rmmod - won't test: dangerous
290
291 # route
292 # XXX: doesn't DNS resolve
293 route
294
295 # rpm2cpio
296
297 # sed - we can do some one-liners here, some testing is a little
298 # difficult to do in just this space (like a,i,c cmds).
299
300 # test ^$ matching
301 echo foo | sed -ne '/^$/p'
302 echo -e "foo\\n\\nbar" | sed -ne '/^$/p'
303
304 sed -e '/test$/d' testcases
305 sed -e '/^echo/d' testcases
306 sed -e '/test/s/dangerous/PELIGROSO/' testcases
307 sed -ne '1,/getopt/p' ../shellutils/pwd.c
308 sed -e '/getopt/r ../shellutils/pwd.c' ../editors/sed.c
309
310
311 # setkeycodes
312
313 # sh - note that we cannot test the shell interactively here
314 sh -c "echo a b c"
315 sh -c ">"
316 sh -c "a"
317 sh sh.testcases
318
319
320 # sleep - can't test: produces no output
321
322 # sort
323 sort tester.sh
324 sort -n tester.sh
325 sort -r tester.sh
326
327 # stty
328 # swapon - won't test: dangerous
329 # swapoff - won't test: dangerous
330 # sync - can't test: no output
331 # syslogd - won't test: too involved
332
333 # tail
334 tail tester.sh
335 tail -n 2  tester.sh
336
337 # tar
338
339 # tee
340 echo "please tee me!" | tee A B C ; cat A B C
341 echo "please tee me!" | tee A B C ; echo "tee me too!" | tee -a A B C ; cat A B C ; rm A B C
342
343 # telnet - can't test: interactive
344
345 # test
346 # tftp
347
348 # touch
349 touch tmpfile1; ls tmpfile1; rm -f tmpfile1
350 touch -c tmpfile1; ls tmpfile1; rm -f tmpfile1
351
352 # tr
353 # BUG: Busybox tr range handling minix style [a-z] instead of GNU # style a-z
354 echo "cbaab" | tr abc zyx
355 echo "TESTING A B C" | tr [A-Z] [a-z]
356 # not GNU compatible
357 echo fdhrnzvfu bffvsentr | tr [a-z] [n-z][a-m]
358 echo abc[] | tr a[b AXB
359 echo testing | tr -d aeiou
360
361 # true
362 true ; echo $?
363
364 # false
365 false ; echo $?
366
367 # tty
368 # umount
369 # uname
370 # uniq
371 # unix2dos
372 # update
373
374 # uptime
375 # BUG: doesn't print number of users
376 uptime
377
378 # usleep
379 # uudecode
380 # uuencode
381 # watchdog
382
383 # wc
384 wc tester.sh
385 wc -c tester.sh
386 wc -w tester.sh
387 wc -l tester.sh
388 wc -L tester.sh
389
390 # wget
391
392 # which
393 which ls
394
395 # whoami
396 whoami
397
398 # xargs
399 # XXX: Busygox xargs divides filenames with '\n' instead of ' '
400 ls -1 ../e* | xargs
401 ls -1 ../e* | xargs md5sum
402
403 # yes - can't test: interactive (needs ^C)
404