bc: convert to "G trick" - this returns bc to zero bss increase
[oweals/busybox.git] / scripts / randomtest.loop
index 28edb6732116e68662dcd4d329cd2bfa4d2281bc..edfbc5c58898037fc6d6678624d12eda035da47c 100755 (executable)
@@ -1,10 +1,72 @@
 #!/bin/sh
 
+run_testsuite=false
+run_testsuite=true
+
+run_single_test=false
+run_single_test=true
+
+test -d "$1" || { echo "'$1' is not a directory"; exit 1; }
+test -x "$1/scripts/randomtest" || { echo "No scripts/randomtest in '$1'"; exit 1; }
+
+export LIBC="uclibc"
+export CROSS_COMPILER_PREFIX="i686-"
+export MAKEOPTS="-j9"
+
 cnt=0
 fail=0
-
 while sleep 1; do
-    echo "Passes: $cnt Failures: $fail"
-    ./randomtest >/dev/null || exit #let fail++
-    let cnt++
+       echo "Passes: $cnt Failures: $fail"
+       dir="test.$$"
+       while test -e "$dir" -o -e "failed.$dir"; do
+               dir="test.$$.$RANDOM"
+       done
+       echo "Running randconfig test in $dir..."
+       if ! "$1/scripts/randomtest" "$1" "$dir" >/dev/null; then
+               mv -- "$dir" "failed.$dir"
+               echo "Failed build in: failed.$dir"
+               exit 1 # you may comment this out...
+               let fail++
+               continue
+       fi
+       if $run_testsuite; then
+               (
+                       cd -- "$dir/testsuite" || exit 1
+                       echo "Running testsuite in $dir..."
+                       SKIP_KNOWN_BUGS=1 SKIP_INTERNET_TESTS=1 ./runtest -v >runtest.log 2>&1
+               )
+               if test $? != 0; then
+                       echo "Failed runtest in $dir"
+                       grep ^FAIL -- "$dir/testsuite/runtest.log"
+                       exit 1 # you may comment this out...
+                       let fail++
+                       continue
+               fi
+               tail -n10 -- "$dir/testsuite/runtest.log"
+       fi
+       if $run_single_test; then
+               (
+                       cd -- "$dir" || exit 1
+                       echo "Running make_single_applets.sh in $dir..."
+
+                       if grep -q '# CONFIG_FEATURE_TFTP_GET is not set' .config \
+                       && grep -q '# CONFIG_FEATURE_TFTP_PUT is not set' .config \
+                       ; then
+                               # If both off, tftp[d] is ifdefed out and test fails.
+                               # Enable one:
+                               sed 's/# CONFIG_FEATURE_TFTP_GET is not set/CONFIG_FEATURE_TFTP_GET=y/' -i .config
+                       fi
+
+                       ./make_single_applets.sh
+               )
+               if test $? != 0; then
+                       echo "Failed make_single_applets.sh in $dir"
+                       exit 1 # you may comment this out...
+                       let fail++
+                       continue
+               fi
+       fi
+       grep -i 'warning:' "$dir/make.log"
+       rm -rf -- "$dir"
+       let cnt++
 done