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 33basename `pwd` 34 35# cat 36cat tester.sh 37echo 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 49echo "1234" | cut -c1 50echo "1234" | cut -c 1 51echo "1234567890" | cut -c2-7 52echo "1234567890" | cut -c 2-7 53echo "f1 f2" | cut -f2 54echo "f1 f2" | cut -f 2 55echo "f1 f2 f3 f4 f5" | cut -f2-4 56echo "f1 f2 f3 f4 f5" | cut -f 2-4 57 58# date 59date 60date -R 61date -u 62date +%d/%m/%y 63 64# dc - needs an input file 65 66# dd 67# BUG: record count line goes to stdout instead of stderr 68dd 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 74df 75df . 76df -k 77df -h 78df -m 79 80# dirname 81dirname `pwd` 82 83# dmesg (XXX: change the silly cmd business in the source) 84dmesg 85dmesg -n 8 86dmesg -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 96du 97du -s 98du -l 99du -k 100du -h 101du -m 102 103# dumpkmap - no counterprt? 104# dutmp - no counterprt? 105 106# echo 107echo "foo bar baz" 108echo -n "no newline" 109 110 111# expr 112expr 1 \\| 1 113expr 1 \\| 0 114expr 0 \\| 1 115expr 0 \\| 0 116 117expr 1 \\& 1 118expr 1 \\& 0 119expr 0 \\& 1 120expr 0 \\& 0 121 122expr 0 \\< 1 123expr 1 \\< 0 124 125expr 1 \\> 0 126expr 0 \\> 1 127 128expr 0 \\<= 1 129expr 1 \\<= 0 130expr 1 \\<= 1 131 132expr 1 \\>= 0 133expr 0 \\>= 1 134expr 1 \\>= 1 135 136expr 1 + 2 137expr 2 - 1 138expr 2 \\* 3 139expr 12 / 2 140expr 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 148find . 149 150# free 151# XXX: minor formatting differences 152free 153 154# freeramdisk 155# fsck.minix - won't test 156# getopt 157 158# grep 159grep -l strdup ../*.c 160grep -c strdup ../*.c 161grep -lc strdup ../*.c 162grep -cv strdup ../*.c 163grep -i null ../grep.c 164grep -e strdup -e regcomp -e atexit ../grep.c 165 166# gunzip 167 168# gzip 169# XXX: compressed output differs from gzip-1.2.4, but decompresses fine 170echo testing 1 2 3 >tmpfile1; gzip tmpfile1; echo tmpfile*; md5sum tmpfile1.gz; rm tmpfile1.gz 171echo testing 1 2 3 | gzip >tmpfile1.gz; md5sum tmpfile1.gz; rm tmpfile1.gz 172 173 174# halt - won't test, dangerous 175 176# head 177head tester.sh 178head -n 2 tester.sh 179 180# hostid 181hostid 182 183# hostname 184# XXX: minor formatting differences 185hostname 186hostname -s 187hostname -i 188hostname -d 189# not going to do this next one 190#hostname -F 191 192# id 193# BUG: Busybox id doesn't print supplemental groups 194id 195id -u 196id -g 197id -ur 198id -un 199 200 201# ifconfig 202# requires BB_FEATURE_IFCONFIG_STATUS 203ifconfig 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 225ls ../e* 226ls -l ../e* 227ls -s ../e* 228ls -h ../e* 229ls -1 ../e* 230 231# lsmod 232lsmod 233 234# makedevs 235 236# md5sum 237md5sum tester.sh 238 239# mkdir 240mkdir 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) 247mkfifo F ; ls -l F ; rm F 248mkfifo -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 258mount 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 267ping -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 274pwd 275 276# rdate - won't test 277 278# readlink 279ln -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 286touch F ; rm F 287 288# rmdir 289# rmmod - won't test: dangerous 290 291# route 292# XXX: doesn't DNS resolve 293route 294 295# rpm2cpio 296 297# rpmunpack 298 299# sed - we can do some one-liners here, some testing is a little 300# difficult to do in just this space (like a,i,c cmds). 301 302# test ^$ matching 303echo foo | sed -ne '/^$/p' 304echo -e "foo\\n\\nbar" | sed -ne '/^$/p' 305 306sed -e '/test$/d' testcases 307sed -e '/^echo/d' testcases 308sed -e '/test/s/dangerous/PELIGROSO/' testcases 309sed -ne '1,/getopt/p' ../pwd.c 310sed -e '/getopt/r ../pwd.c' ../sed.c 311 312 313# setkeycodes 314 315# sh - note that we cannot test the shell interactively here 316sh -c "echo a b c" 317sh -c ">" 318sh -c "a" 319sh sh.testcases 320 321 322# sleep - can't test: produces no output 323 324# sort 325sort tester.sh 326sort -n tester.sh 327sort -r tester.sh 328 329# stty 330# swapon - won't test: dangerous 331# swapoff - won't test: dangerous 332# sync - can't test: no output 333# syslogd - won't test: too involved 334 335# tail 336tail tester.sh 337tail -n 2 tester.sh 338 339# tar 340 341# tee 342echo "please tee me!" | tee A B C ; cat A B C 343echo "please tee me!" | tee A B C ; echo "tee me too!" | tee -a A B C ; cat A B C ; rm A B C 344 345# telnet - can't test: interactive 346 347# test 348# tftp 349 350# touch 351touch tmpfile1; ls tmpfile1; rm -f tmpfile1 352touch -c tmpfile1; ls tmpfile1; rm -f tmpfile1 353 354# tr 355# BUG: Busybox tr range handling minix style [a-z] instead of GNU # style a-z 356echo "cbaab" | tr abc zyx 357echo "TESTING A B C" | tr [A-Z] [a-z] 358# not GNU compatible 359echo fdhrnzvfu bffvsentr | tr [a-z] [n-z][a-m] 360echo abc[] | tr a[b AXB 361echo testing | tr -d aeiou 362 363# true 364true ; echo $? 365 366# false 367false ; echo $? 368 369# tty 370# umount 371# uname 372# uniq 373# unix2dos 374# update 375 376# uptime 377# BUG: doesn't print number of users 378uptime 379 380# usleep 381# uudecode 382# uuencode 383# watchdog 384 385# wc 386wc tester.sh 387wc -c tester.sh 388wc -w tester.sh 389wc -l tester.sh 390wc -L tester.sh 391 392# wget 393 394# which 395which ls 396 397# whoami 398whoami 399 400# xargs 401# XXX: Busygox xargs divides filenames with '\n' instead of ' ' 402ls -1 ../e* | xargs 403ls -1 ../e* | xargs md5sum 404 405# yes - can't test: interactive (needs ^C) 406 407