X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=shell%2Fhush_test%2Frun-all;h=837b3f7da100d64b585ffd1a7cd3e048b578b259;hb=992e0ff7e9a71a85a89d4fb7b4e6ace7ba74e2ba;hp=b79af2f6704ceced0241d85903663d65b1c0125f;hpb=30c9cc5b178932bc417846919eaa2fc1bf8e5996;p=oweals%2Fbusybox.git diff --git a/shell/hush_test/run-all b/shell/hush_test/run-all index b79af2f67..837b3f7da 100755 --- a/shell/hush_test/run-all +++ b/shell/hush_test/run-all @@ -9,65 +9,98 @@ unset LC_NUMERIC unset LC_TIME unset LC_ALL -test -x hush || { - echo "No ./hush - creating a link to ../../busybox" - ln -s ../../busybox hush -} +if test ! -x hush; then + if test ! -x ../../busybox; then + echo "Can't run tests. Put hush binary into this directory (`pwd`)" + exit 1 + fi + echo "No ./hush - creating a link to ../../busybox" + ln -s ../../busybox hush +fi +if test ! -f .config; then + if test ! -f ../../.config; then + echo "Missing .config file" + exit 1 + fi + cp ../../.config . || exit 1 +fi -PATH="$PWD:$PATH" # for hush and recho/zecho/printenv +eval $(sed -e '/^#/d' -e '/^$/d' -e 's:^:export :' .config) + +PATH="`pwd`:$PATH" # for hush and recho/zecho/printenv export PATH -THIS_SH="$PWD/hush" +THIS_SH="`pwd`/hush" export THIS_SH do_test() { - test -d "$1" || return 0 -# echo Running tests in directory "$1" - ( - cd "$1" || { echo "cannot cd $1!"; exit 1; } - for x in run-*; do - test -f "$x" || continue - case "$x" in - "$0"|run-minimal|run-gprof) ;; - *.orig|*~) ;; - #*) echo $x ; sh $x ;; - *) - sh "$x" >"../$1-$x.fail" 2>&1 && \ - { echo "$1/$x: ok"; rm "../$1-$x.fail"; } || echo "$1/$x: fail"; - ;; - esac - done - # Many bash run-XXX scripts just do this, - # no point in duplication it all over the place - for x in *.tests; do + test -d "$1" || return 0 + d=${d%/} +# echo Running tests in directory "$1" + ( + tret=0 + cd "$1" || { echo "cannot cd $1!"; exit 1; } + for x in run-*; do + test -f "$x" || continue + case "$x" in + "$0"|run-minimal|run-gprof) ;; + *.orig|*~) ;; + #*) echo $x ; sh $x ;; + *) + echo -n "$1/$x:" + sh "$x" >"../$1-$x.fail" 2>&1 && \ + { { echo " ok"; rm "../$1-$x.fail"; } || echo " fail"; } + ;; + esac + done + # Many bash run-XXX scripts just do this, + # no point in duplication it all over the place + for x in *.tests; do test -x "$x" || continue name="${x%%.tests}" test -f "$name.right" || continue -# echo Running test: "$name.right" - { - "$THIS_SH" "./$x" >"$name.xx" 2>&1 - diff -u "$name.xx" "$name.right" >"../$1-$x.fail" && rm -f "$name.xx" "../$1-$x.fail" - } && echo "$1/$x: ok" || echo "$1/$x: fail" - done - ) +# echo Running test: "$x" + echo -n "$1/$x:" + ( + "$THIS_SH" "./$x" >"$name.xx" 2>&1 + r=$? + # filter C library differences + sed -i \ + -e "/: invalid option /s:'::g" \ + "$name.xx" + test $r -eq 77 && rm -f "../$1-$x.fail" && exit 77 + diff -u "$name.xx" "$name.right" >"../$1-$x.fail" && rm -f "$name.xx" "../$1-$x.fail" + ) + case $? in + 0) echo " ok";; + 77) echo " skip (feature disabled)";; + *) echo " fail"; tret=1;; + esac + done + exit ${tret} + ) } # Main part of this script # Usage: run-all [directories] +ret=0 + if [ $# -lt 1 ]; then - # All sub directories - modules=`ls -d hush-*` + # All sub directories + modules=`ls -d hush-*` - for module in $modules; do - do_test $module - done + for module in $modules; do + do_test $module || ret=1 + done else - while [ $# -ge 1 ]; do + while [ $# -ge 1 ]; do if [ -d $1 ]; then - do_test $1 + do_test $1 || ret=1 fi shift - done + done fi + +exit ${ret}