X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;ds=sidebyside;f=shell%2Fhush_test%2Frun-all;h=837b3f7da100d64b585ffd1a7cd3e048b578b259;hb=f5470419404d643070db99d058405b714695b817;hp=d7602c8908004c7146af21685f26e9e5c988b017;hpb=e61f07f03661b8e75a54e50d8a2c948c0e215531;p=oweals%2Fbusybox.git diff --git a/shell/hush_test/run-all b/shell/hush_test/run-all index d7602c890..837b3f7da 100755 --- a/shell/hush_test/run-all +++ b/shell/hush_test/run-all @@ -9,50 +9,77 @@ 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 + +eval $(sed -e '/^#/d' -e '/^$/d' -e 's:^:export :' .config) -PATH="$PWD:$PATH" # for hush and recho/zecho/printenv +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" - ( - 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 ;; - *) - 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"; tret=1; } - done - exit ${tret} - ) +# 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 @@ -61,19 +88,19 @@ do_test() 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 + for module in $modules; do do_test $module || ret=1 - done + done else - while [ $# -ge 1 ]; do + while [ $# -ge 1 ]; do if [ -d $1 ]; then - do_test $1 || ret=1 + do_test $1 || ret=1 fi shift - done + done fi exit ${ret}