diff options
Diffstat (limited to 'release/src/router/busybox/tests/testcases')
-rw-r--r-- | release/src/router/busybox/tests/testcases | 406 |
1 files changed, 406 insertions, 0 deletions
diff --git a/release/src/router/busybox/tests/testcases b/release/src/router/busybox/tests/testcases new file mode 100644 index 00000000..4708e54e --- /dev/null +++ b/release/src/router/busybox/tests/testcases @@ -0,0 +1,406 @@ +# testcases +# +# This file should be filled with test cases to test applets that: +# +# - can somehow produce output (we can't test sync or sleep) +# - have a GNU (or other) counterpart +# - are not interactive (don't require a ^C or anything) +# - don't require extensive setup or cleanup (a litte setup is fine) +# - don't have huge and possibly damaging effects (fsck, swapoff) +# +# If possible, a test case should be made that tests each option the applet +# supports. When a new option is added, a new test case should be written for +# it. When somebody reports a bug with a testcase, that testcase should be +# added here as well. +# +# Some other guidelines to follow: +# +# - please try to keep applets alphabetized, it will make life easier +# - use the file tester.sh or testcases when you need to do a non-destructive +# test on a file (i.e., cat, md5sum) +# - try to make the applet you're testing the first thing on the line (this +# not always possible) +# - (???) if you have to create a temporary file, call it TMPFILE +# - pipe symbols that represent real pipes need a space in front of them +# (so the test script can find them and add the "../busybox" after it). +# - pipe symbols that are not used for pipes need to be shell-escaped, +# with a double \. See the expr test cases. + + +# ar + +# basename +basename `pwd` + +# cat +cat tester.sh +echo hello there | cat tester.sh - + +# chmod +# chown +# chgrp +# chroot +# chvt - can't be tested here +# clear - can't be tested here +# cmp +# cp + +# cut +echo "1234" | cut -c1 +echo "1234" | cut -c 1 +echo "1234567890" | cut -c2-7 +echo "1234567890" | cut -c 2-7 +echo "f1 f2" | cut -f2 +echo "f1 f2" | cut -f 2 +echo "f1 f2 f3 f4 f5" | cut -f2-4 +echo "f1 f2 f3 f4 f5" | cut -f 2-4 + +# date +date +date -R +date -u +date +%d/%m/%y + +# dc - needs an input file + +# dd +# BUG: record count line goes to stdout instead of stderr +dd if=/dev/urandom of=O bs=1k count=1 ; ls -l O ; rm O + +# deallocvt + +# df +# XXX: minor formatting differences +df +df . +df -k +df -h +df -m + +# dirname +dirname `pwd` + +# dmesg (XXX: change the silly cmd business in the source) +dmesg +dmesg -n 8 +dmesg -s 512 +# I really don't want to do this next one +#dmesg -c + +# dos2unix - needs an input file +# dpkg +# dpkg_deb + +# du +# BUG: rounding behavior differs from GNU du +du +du -s +du -l +du -k +du -h +du -m + +# dumpkmap - no counterprt? +# dutmp - no counterprt? + +# echo +echo "foo bar baz" +echo -n "no newline" + + +# expr +expr 1 \\| 1 +expr 1 \\| 0 +expr 0 \\| 1 +expr 0 \\| 0 + +expr 1 \\& 1 +expr 1 \\& 0 +expr 0 \\& 1 +expr 0 \\& 0 + +expr 0 \\< 1 +expr 1 \\< 0 + +expr 1 \\> 0 +expr 0 \\> 1 + +expr 0 \\<= 1 +expr 1 \\<= 0 +expr 1 \\<= 1 + +expr 1 \\>= 0 +expr 0 \\>= 1 +expr 1 \\>= 1 + +expr 1 + 2 +expr 2 - 1 +expr 2 \\* 3 +expr 12 / 2 +expr 12 % 5 + +# somebody else can do all the string stuff + + +# fbset - can't be tested here +# fdflush +# find +find . + +# free +# XXX: minor formatting differences +free + +# freeramdisk +# fsck.minix - won't test +# getopt + +# grep +grep -l strdup ../*.c +grep -c strdup ../*.c +grep -lc strdup ../*.c +grep -cv strdup ../*.c +grep -i null ../grep.c +grep -e strdup -e regcomp -e atexit ../grep.c + +# gunzip + +# gzip +# XXX: compressed output differs from gzip-1.2.4, but decompresses fine +echo testing 1 2 3 >tmpfile1; gzip tmpfile1; echo tmpfile*; md5sum tmpfile1.gz; rm tmpfile1.gz +echo testing 1 2 3 | gzip >tmpfile1.gz; md5sum tmpfile1.gz; rm tmpfile1.gz + + +# halt - won't test, dangerous + +# head +head tester.sh +head -n 2 tester.sh + +# hostid +hostid + +# hostname +# XXX: minor formatting differences +hostname +hostname -s +hostname -i +hostname -d +# not going to do this next one +#hostname -F + +# id +# BUG: Busybox id doesn't print supplemental groups +id +id -u +id -g +id -ur +id -un + + +# ifconfig +# requires BB_FEATURE_IFCONFIG_STATUS +ifconfig +#ifconfig -a +#ifconfig eth0 +#ifconfig lo + +# init - won't test +# insmod - won't test + +# kill +#kill -l +# not going to do any more + +# length +# ln - see ln_tests.mk +# loadacm +# loadfont +# loadkmap +# logger +# logname + +# ls +# XXX: minor formatting differences +ls ../e* +ls -l ../e* +ls -s ../e* +ls -h ../e* +ls -1 ../e* + +# lsmod +lsmod + +# makedevs + +# md5sum +md5sum tester.sh + +# mkdir +mkdir D ; ls -ld D ; rmdir D + +# mkfifo +# +# we will test making one. actually testing pushing data through it requires +# more interaction than we can manage here. +# (these lines turn up an existing ls bug) +mkfifo F ; ls -l F ; rm F +mkfifo -m 0600 F ; ls -l F ; rm F + +# mkfs.minix - won't test +# mknod +# mkswap - won't test +# mktemp +# more - can't test: interactive + +# mount +# BUG: proc line starts with /proc instead of proc +mount +# not going to test mount with any args, can't be done safely or sanely + +# mt +# mv - see mv_tests.mk +# nc +# nfsmount +# nslookup +# ping +ping -c 3 yahoo.com +# pivot_root +# poweroff - won't test +# printf +# ps - there's lotsa differences between busybox ps and any other ps + +# pwd +pwd + +# rdate - won't test + +# readlink +ln -sf tester.sh L ; readlink L ; rm -f L + +# reboot - won't test +# renice - won't test +# reset - can't test: no output + +# rm +touch F ; rm F + +# rmdir +# rmmod - won't test: dangerous + +# route +# XXX: doesn't DNS resolve +route + +# rpm2cpio + +# rpmunpack + +# sed - we can do some one-liners here, some testing is a little +# difficult to do in just this space (like a,i,c cmds). + +# test ^$ matching +echo foo | sed -ne '/^$/p' +echo -e "foo\\n\\nbar" | sed -ne '/^$/p' + +sed -e '/test$/d' testcases +sed -e '/^echo/d' testcases +sed -e '/test/s/dangerous/PELIGROSO/' testcases +sed -ne '1,/getopt/p' ../pwd.c +sed -e '/getopt/r ../pwd.c' ../sed.c + + +# setkeycodes + +# sh - note that we cannot test the shell interactively here +sh -c "echo a b c" +sh -c ">" +sh -c "a" +sh sh.testcases + + +# sleep - can't test: produces no output + +# sort +sort tester.sh +sort -n tester.sh +sort -r tester.sh + +# stty +# swapon - won't test: dangerous +# swapoff - won't test: dangerous +# sync - can't test: no output +# syslogd - won't test: too involved + +# tail +tail tester.sh +tail -n 2 tester.sh + +# tar + +# tee +echo "please tee me!" | tee A B C ; cat A B C +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 + +# telnet - can't test: interactive + +# test +# tftp + +# touch +touch tmpfile1; ls tmpfile1; rm -f tmpfile1 +touch -c tmpfile1; ls tmpfile1; rm -f tmpfile1 + +# tr +# BUG: Busybox tr range handling minix style [a-z] instead of GNU # style a-z +echo "cbaab" | tr abc zyx +echo "TESTING A B C" | tr [A-Z] [a-z] +# not GNU compatible +echo fdhrnzvfu bffvsentr | tr [a-z] [n-z][a-m] +echo abc[] | tr a[b AXB +echo testing | tr -d aeiou + +# true +true ; echo $? + +# false +false ; echo $? + +# tty +# umount +# uname +# uniq +# unix2dos +# update + +# uptime +# BUG: doesn't print number of users +uptime + +# usleep +# uudecode +# uuencode +# watchdog + +# wc +wc tester.sh +wc -c tester.sh +wc -w tester.sh +wc -l tester.sh +wc -L tester.sh + +# wget + +# which +which ls + +# whoami +whoami + +# xargs +# XXX: Busygox xargs divides filenames with '\n' instead of ' ' +ls -1 ../e* | xargs +ls -1 ../e* | xargs md5sum + +# yes - can't test: interactive (needs ^C) + |