Numerous new testcases from Larry Doolittle and a patch to tester.sh to avoid
authorMark Whitley <markw@lineo.com>
Thu, 24 May 2001 17:15:33 +0000 (17:15 -0000)
committerMark Whitley <markw@lineo.com>
Thu, 24 May 2001 17:15:33 +0000 (17:15 -0000)
a bash2-ism and quote variables that contain strings.

tests/sh.testcases [new file with mode: 0644]
tests/testcases
tests/tester.sh

diff --git a/tests/sh.testcases b/tests/sh.testcases
new file mode 100644 (file)
index 0000000..85d72a2
--- /dev/null
@@ -0,0 +1,33 @@
+# try running this with bash, ksh, ash, and hush.
+echo `echo -e foo\\\necho bar`
+
+echo THIS IS A TEST >foo
+cat $(echo FOO | tr 'A-Z' 'a-z')
+cat foo | tr 'A-Z' 'a-z'
+cat $(echo FOO | tr 'A-Z' 'a-z') | tr 'A-Z' 'a-z'
+
+cat foo | if true;  then tr 'A-Z' 'a-z'; else echo bar1; fi
+cat foo | if false; then tr 'A-Z' 'a-z'; else echo bar2; fi
+if true;  then tr 'A-Z' 'a-z'; else echo bar3; fi <foo
+if false; then tr 'A-Z' 'a-z'; else echo bar4; fi <foo
+if true || false; then echo foo; else echo bar5; fi
+if true && false; then echo bar6; else echo foo; fi
+
+# ash, lash, and hush do not create fish; bash and ksh do.  Tough.
+# Thanks to Tapani Tarvainen <tt@mit.jyu.fi> for this stress test.
+unset TMP
+rm -f fish
+TMP=fish >$TMP
+ls fish
+
+# The following example shows that hush's parser is
+# not _really_ Bourne compatible
+echo "echo Hello World" >"a=b"
+unset a
+chmod a+x "a=b"
+PATH=$PATH:.
+"a=b"
+echo $a
+
+# assuming the shell wasn't too buggy, clean up the mess
+rm -f a=b fish foo
index 24d491c5bd226873202401c5b90ba55c7e83879e..8f4e14765b82d63cec3c801be72c062d07c0881a 100644 (file)
@@ -30,6 +30,7 @@ basename `pwd`
 
 # cat
 cat tester.sh
+echo hello there | cat tester.sh -
 
 # chmod
 # chown
@@ -39,7 +40,6 @@ cat tester.sh
 # clear - can't be tested here
 # cmp
 # cp
-# mv
 
 # cut
 echo "1234" | cut -c1
@@ -102,36 +102,35 @@ echo -n "no newline"
 
 
 # expr
-# XXX: something's wrong with the way I'm doing these. Figure it out later.
-#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
+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
 
@@ -156,7 +155,10 @@ grep -lc strdup ../*.c
 grep -cv strdup ../*.c
 
 # gunzip
+
 # gzip
+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
 
 # head
@@ -183,7 +185,8 @@ id -un
 
 
 # ifconfig
-#ifconfig
+# requires BB_FEATURE_IFCONFIG_STATUS
+ifconfig
 #ifconfig -a
 #ifconfig eth0
 #ifconfig lo
@@ -196,7 +199,7 @@ id -un
 # not going to do any more
 
 # length
-# ln
+# ln - see ln_tests.mk
 # loadacm
 # loadfont
 # loadkmap
@@ -240,6 +243,7 @@ mount
 # not going to test any more
 
 # mt
+# mv - see mv_tests.mk
 # nc
 # nfsmount
 # nslookup
@@ -267,7 +271,10 @@ touch F ; rm F
 
 # rmdir
 # rmmod - won't test: dangerous
+
 # route
+route
+
 # rpmunpack
 
 # sed - we can do some one-liners here; probably needs it's own input file
@@ -282,6 +289,8 @@ sed -e '/test/s/dangerous/PELIGROSO/' testcases
 sh -c "echo a b c"
 sh -c ">"
 sh -c "a"
+#sh sh.testcases
+
 
 # sleep - can't test: produces no output
 
@@ -310,10 +319,25 @@ echo "please tee me!" | tee A B C ; echo "tee me too!" | tee -a A B C ; cat A B
 
 # test
 # tftp
+
 # touch
+touch tmpfile1; ls tmpfile1; rm -f tmpfile1
+touch -c tmpfile1; ls tmpfile1; rm -f tmpfile1
+
 # tr
+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
index a4fa38d348ee5c2f313b05da3fe40c4869079b7f..92090068d45410bf3976d3216b171701e72eda86 100755 (executable)
@@ -87,7 +87,7 @@ unalias -a    # gets rid of aliases that might create different output
 
 
 # do extra setup (if any)
-if [ ! -z $SETUP ] 
+if [ ! -z "$SETUP" ] 
 then
        [ $DEBUG -ge 2 ] && echo "running setup commands in $SETUP"
        source $SETUP
@@ -120,8 +120,12 @@ do
 
                                # change line to include "busybox" before every statement
                                line="$BUSYBOX $line"
-                               line=${line//;/; $BUSYBOX }
-                               line=${line//|/| $BUSYBOX }
+                               # is this a bash-2-ism?
+                               # line=${line//;/; $BUSYBOX }
+                               # line=${line//|/| $BUSYBOX }
+                               # assume $BUSYBOX has no commas
+                               line=`echo $line | sed -e 's,;,; '$BUSYBOX, \
+                                                      -e 's,|,| '$BUSYBOX,`
 
                                # execute line using busybox programs
                                [ $DEBUG -ge 2 ] && echo "testing: $line" | tee -a $LOGFILE
@@ -143,11 +147,11 @@ done
 
 
 # do normal cleanup
-[ $KEEPTMPFILES == "no" ] && rm -f $BB_OUT $GNU_OUT
+[ "$KEEPTMPFILES" = "no" ] && rm -f $BB_OUT $GNU_OUT
 
 
 # do extra cleanup (if any)
-if [ ! -z $CLEANUP ] 
+if [ ! -z "$CLEANUP" ] 
 then
        [ $DEBUG -ge 2 ] && echo "running cleanup commands in $CLEANUP"
        source $CLEANUP