123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- [= autogen5 template sh=check.sh =]
- [=
- #
- # This file contains the shell template to run tests on the fixes
- #
- =]#!/bin/sh
- set -e
- TESTDIR=tests
- TESTBASE=`cd $1;${PWDCMD-pwd}`
- [ -d ${TESTDIR} ] || mkdir ${TESTDIR}
- cd ${TESTDIR}
- TESTDIR=`${PWDCMD-pwd}`
- TARGET_MACHINE='*'
- DESTDIR=`${PWDCMD-pwd}`/res
- SRCDIR=`${PWDCMD-pwd}`/inc
- FIND_BASE='.'
- VERBOSE=[=` echo ${VERBOSE-1} `=]
- INPUT=`${PWDCMD-pwd}`
- ORIGDIR=${INPUT}
- export TARGET_MACHINE DESTDIR SRCDIR FIND_BASE VERBOSE INPUT ORIGDIR
- rm -rf ${DESTDIR} ${SRCDIR}
- mkdir ${DESTDIR} ${SRCDIR}
- (
- [=
- (shellf
- "for f in %s
- do case $f in
- */* ) echo $f | sed 's;/[^/]*$;;' ;;
- esac
- done | sort -u | \
- while read g
- do echo \" mkdir \\${SRCDIR}/$g || mkdir -p \\${SRCDIR}/$g || exit 1\"
- done" (join " " (stack "fix.files")) ) =]
- ) 2> /dev/null[= # suppress 'No such file or directory' messages =]
- cd inc
- [=
- (define sfile "")
- (define HACK "")
- (define dfile "") =][=
- FOR fix =][=
- IF (> (count "test_text") 1) =][=
- (set! HACK (string-upcase! (get "hackname")))
- (set! sfile (if (exist? "files") (get "files[]") "testing.h"))
- (set! dfile (string-append
- (if (*==* sfile "/")
- (shellf "echo \"%s\"|sed 's,/[^/]*,/,'" sfile )
- "" )
- (string-tr! (get "hackname") "_A-Z" "-a-z")
- ) ) =][=
- FOR test_text (for-from 1) =]
- cat >> [=(. sfile)=] <<_HACK_EOF_
- #if defined( [=(. HACK)=]_CHECK_[=(for-index)=] )
- [=test_text=]
- #endif /* [=(. HACK)=]_CHECK_[=(for-index)=] */
- _HACK_EOF_
- echo [=(. sfile)=] | ../../fixincl
- mv -f [=(. sfile)=] [=(. dfile)=]-[=(for-index)=].h
- [ -f ${DESTDIR}/[=(. sfile)=] ] && [=#
- =]mv ${DESTDIR}/[=(. sfile)=] ${DESTDIR}/[=(. dfile)=]-[=(for-index)=].h[=
- ENDFOR test_text =][=
- ENDIF multi-test =][=
- ENDFOR fix
- =][=
- FOR fix =][=
- (set! HACK (string-upcase! (get "hackname"))) =][=
- IF (not (exist? "test_text")) =][=
- (if (not (exist? "replace"))
- (error (sprintf "include fix '%s' has no test text"
- (get "hackname") )) )
- =][=
- ELSE =]
- cat >> [= (raw-shell-str (if (exist? "files") (get "files[0]") "testing.h"))
- =] <<_HACK_EOF_
- #if defined( [=(. HACK)=]_CHECK )
- [=test_text=]
- #endif /* [=(. HACK)=]_CHECK */
- _HACK_EOF_
- [=ENDIF =][=
- ENDFOR fix
- =]
- export TEST_MODE=true
- find . -type f | sed 's;^\./;;' | sort | ../../fixincl
- cd ${DESTDIR}
- exitok=true
- find * -type f -print > ${TESTDIR}/LIST
- # Special hack for sys/types.h: the #define-d types for size_t,
- # ptrdiff_t and wchar_t are different for each port. Therefore,
- # strip off the defined-to type so that the test results are the
- # same for all platforms.
- #
- sed 's/\(#define __[A-Z_]*_TYPE__\).*/\1/' sys/types.h > XX
- mv -f XX sys/types.h
- # The following subshell weirdness is for saving an exit
- # status from within a while loop that reads input. If you can
- # think of a cleaner way, suggest away, please...
- #
- exitok=`
- exec < ${TESTDIR}/LIST
- while read f
- do
- if [ ! -f ${TESTBASE}/$f ]
- then
- echo "Newly fixed header: $f" >&2
- exitok=false
- elif cmp $f ${TESTBASE}/$f >&2
- then
- :
- else
- ${DIFF:-diff} -c $f ${TESTBASE}/$f >&2 || :
- exitok=false
- fi
- done
- echo $exitok`
- cd $TESTBASE
- find * -type f -print | \
- fgrep -v 'CVS/' | \
- fgrep -v '.svn/' > ${TESTDIR}/LIST
- exitok=`
- exec < ${TESTDIR}/LIST
- while read f
- do
- if [ -s $f ] && [ ! -f ${DESTDIR}/$f ]
- then
- echo "Missing header fix: $f" >&2
- exitok=false
- fi
- done
- echo $exitok`
- echo
- if $exitok
- then
- cd ${TESTDIR}
- rm -rf inc res LIST
- cd ..
- rmdir ${TESTDIR} > /dev/null 2>&1 || :
- echo All fixinclude tests pass >&2
- else
- echo There were fixinclude test FAILURES >&2
- fi
- $exitok[=
- (if (defined? 'set-writable) (set-writable))
- =]
|