mirror of
https://github.com/topjohnwu/ndk-busybox.git
synced 2024-12-05 10:27:15 +00:00
0a4f578fdc
Also, more testcases and comments on bugs and formatting differences in some of the testcases.
396 lines
6.6 KiB
Plaintext
396 lines
6.6 KiB
Plaintext
# 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
|
|
|
|
# rpmunpack
|
|
|
|
# sed - we can do some one-liners here; probably needs it's own input file
|
|
echo foo | sed -ne '/^$/p'
|
|
sed -e '/test$/d' testcases
|
|
sed -e '/^echo/d' testcases
|
|
sed -e '/test/s/dangerous/PELIGROSO/' testcases
|
|
|
|
# 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)
|