1[= autogen5 template sh=check.sh =] 2[= 3# 4# This file contanes the shell template to run tests on the fixes 5# 6=]#!/bin/sh 7 8set -e 9TESTDIR=tests 10TESTBASE=`cd $1;${PWDCMD-pwd}` 11 12[ -d ${TESTDIR} ] || mkdir ${TESTDIR} 13cd ${TESTDIR} 14TESTDIR=`${PWDCMD-pwd}` 15 16TARGET_MACHINE='*' 17DESTDIR=`${PWDCMD-pwd}`/res 18SRCDIR=`${PWDCMD-pwd}`/inc 19FIND_BASE='.' 20VERBOSE=[=` echo ${VERBOSE-1} `=] 21INPUT=`${PWDCMD-pwd}` 22ORIGDIR=${INPUT} 23 24export TARGET_MACHINE DESTDIR SRCDIR FIND_BASE VERBOSE INPUT ORIGDIR 25 26rm -rf ${DESTDIR} ${SRCDIR} 27mkdir ${DESTDIR} ${SRCDIR} 28( 29[= 30 (shellf 31 "for f in %s 32 do case $f in 33 */* ) echo $f | sed 's;/[^/]*$;;' ;; 34 esac 35 done | sort -u | \ 36 while read g 37 do echo \" mkdir \\${SRCDIR}/$g || mkdir -p \\${SRCDIR}/$g || exit 1\" 38 done" (join " " (stack "fix.files")) ) =] 39) 2> /dev/null[= # suppress 'No such file or directory' messages =] 40cd inc 41[= 42(define sfile "") 43(define HACK "") 44(define dfile "") =][= 45 46FOR fix =][= 47 48 IF (> (count "test_text") 1) =][= 49 (set! HACK (string-upcase! (get "hackname"))) 50 (set! sfile (if (exist? "files") (get "files[]") "testing.h")) 51 (set! dfile (string-append 52 (if (*==* sfile "/") 53 (shellf "echo \"%s\"|sed 's,/[^/]*,/,'" sfile ) 54 "" ) 55 (string-tr! (get "hackname") "_A-Z" "-a-z") 56 ) ) =][= 57 58 FOR test_text (for-from 1) =] 59cat >> [=(. sfile)=] <<_HACK_EOF_ 60 61 62#if defined( [=(. HACK)=]_CHECK_[=(for-index)=] ) 63[=test_text=] 64#endif /* [=(. HACK)=]_CHECK_[=(for-index)=] */ 65_HACK_EOF_ 66echo [=(. sfile)=] | ../../fixincl 67mv -f [=(. sfile)=] [=(. dfile)=]-[=(for-index)=].h 68[ -f ${DESTDIR}/[=(. sfile)=] ] && [=# 69 =]mv ${DESTDIR}/[=(. sfile)=] ${DESTDIR}/[=(. dfile)=]-[=(for-index)=].h[= 70 71 ENDFOR test_text =][= 72 73 ENDIF multi-test =][= 74 75ENDFOR fix 76 77=][= 78 79FOR fix =][= 80 (set! HACK (string-upcase! (get "hackname"))) =][= 81 82 IF (not (exist? "test_text")) =][= 83 (if (not (exist? "replace")) 84 (error (sprintf "include fix '%s' has no test text" 85 (get "hackname") )) ) 86 =][= 87 ELSE =] 88cat >> [= 89 IF (exist? "files") =][= 90 files[0] =][= 91 ELSE =]testing.h[= 92 ENDIF =] <<_HACK_EOF_ 93 94 95#if defined( [=(. HACK)=]_CHECK ) 96[=test_text=] 97#endif /* [=(. HACK)=]_CHECK */ 98_HACK_EOF_ 99[=ENDIF =][= 100 101ENDFOR fix 102 103=] 104 105find . -type f | sed 's;^\./;;' | sort | ../../fixincl 106cd ${DESTDIR} 107 108exitok=true 109 110find * -type f -print > ${TESTDIR}/LIST 111 112# Special hack for sys/types.h: the #define-d types for size_t, 113# ptrdiff_t and wchar_t are different for each port. Therefore, 114# strip off the defined-to type so that the test results are the 115# same for all platforms. 116# 117sed 's/\(#define __[A-Z_]*_TYPE__\).*/\1/' sys/types.h > XX 118mv -f XX sys/types.h 119 120# The following subshell weirdness is for saving an exit 121# status from within a while loop that reads input. If you can 122# think of a cleaner way, suggest away, please... 123# 124exitok=` 125exec < ${TESTDIR}/LIST 126while read f 127do 128 if [ ! -f ${TESTBASE}/$f ] 129 then 130 echo "Newly fixed header: $f" >&2 131 exitok=false 132 133 elif cmp $f ${TESTBASE}/$f >&2 134 then 135 : 136 137 else 138 ${DIFF:-diff} -c $f ${TESTBASE}/$f >&2 || : 139 exitok=false 140 fi 141done 142echo $exitok` 143 144cd $TESTBASE 145 146find * -type f -print | \ 147fgrep -v 'CVS/' | \ 148fgrep -v '.svn/' > ${TESTDIR}/LIST 149 150exitok=` 151exec < ${TESTDIR}/LIST 152while read f 153do 154 if [ -s $f ] && [ ! -f ${DESTDIR}/$f ] 155 then 156 echo "Missing header fix: $f" >&2 157 exitok=false 158 fi 159done 160echo $exitok` 161 162echo 163if $exitok 164then 165 cd ${TESTDIR} 166 rm -rf inc res LIST 167 cd .. 168 rmdir ${TESTDIR} > /dev/null 2>&1 || : 169 echo All fixinclude tests pass >&2 170else 171 echo There were fixinclude test FAILURES >&2 172fi 173$exitok[= 174 175(if (defined? 'set-writable) (set-writable)) 176 177=] 178