1 [= autogen5 template sh=check.sh =] 2 [= 3 # 4 # This file contains the shell template to run tests on the fixes 5 # 6 =]#!/bin/sh 7 8 set -e 9 TESTDIR=tests 10 TESTBASE=`cd $1;${PWDCMD-pwd}` 11 12 [ -d ${TESTDIR} ] || mkdir ${TESTDIR} 13 cd ${TESTDIR} 14 TESTDIR=`${PWDCMD-pwd}` 15 16 TARGET_MACHINE='*' 17 DESTDIR=`${PWDCMD-pwd}`/res 18 SRCDIR=`${PWDCMD-pwd}`/inc 19 FIND_BASE='.' 20 VERBOSE=[=` echo ${VERBOSE-1} `=] 21 INPUT=`${PWDCMD-pwd}` 22 ORIGDIR=${INPUT} 23 24 export TARGET_MACHINE DESTDIR SRCDIR FIND_BASE VERBOSE INPUT ORIGDIR 25 26 rm -rf ${DESTDIR} ${SRCDIR} 27 mkdir ${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 =] 40 cd inc 41 [= 42 (define sfile "") 43 (define HACK "") 44 (define dfile "") =][= 45 46 FOR 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) =] 59 cat >> [=(. sfile)=] <<_HACK_EOF_ 60 61 62 #if defined( [=(. HACK)=]_CHECK_[=(for-index)=] ) 63 [=test_text=] 64 #endif /* [=(. HACK)=]_CHECK_[=(for-index)=] */ 65 _HACK_EOF_ 66 echo [=(. sfile)=] | ../../fixincl 67 mv -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 75 ENDFOR fix 76 77 =][= 78 79 FOR 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 =] 88 cat >> [= (raw-shell-str (if (exist? "files") (get "files[0]") "testing.h")) 89 =] <<_HACK_EOF_ 90 91 92 #if defined( [=(. HACK)=]_CHECK ) 93 [=test_text=] 94 #endif /* [=(. HACK)=]_CHECK */ 95 _HACK_EOF_ 96 [=ENDIF =][= 97 98 ENDFOR fix 99 100 =] 101 102 export TEST_MODE=true 103 find . -type f | sed 's;^\./;;' | sort | ../../fixincl 104 cd ${DESTDIR} 105 106 exitok=true 107 108 find * -type f -print > ${TESTDIR}/LIST 109 110 # Special hack for sys/types.h: the #define-d types for size_t, 111 # ptrdiff_t and wchar_t are different for each port. Therefore, 112 # strip off the defined-to type so that the test results are the 113 # same for all platforms. 114 # 115 sed 's/\(#define __[A-Z_]*_TYPE__\).*/\1/' sys/types.h > XX 116 mv -f XX sys/types.h 117 118 # The following subshell weirdness is for saving an exit 119 # status from within a while loop that reads input. If you can 120 # think of a cleaner way, suggest away, please... 121 # 122 exitok=` 123 exec < ${TESTDIR}/LIST 124 while read f 125 do 126 if [ -n "$MSYSTEM" -o -n "$DJGPP" ] 127 then 128 # On MinGW and DJGPP convert line endings to avoid false positives 129 mv $f $f.dos; tr -d '\r' < $f.dos > $f; rm $f.dos 130 fi 131 if [ ! -f ${TESTBASE}/$f ] 132 then 133 echo "Newly fixed header: $f" >&2 134 exitok=false 135 136 elif cmp $f ${TESTBASE}/$f >&2 137 then 138 : 139 140 else 141 ${DIFF:-diff} -c $f ${TESTBASE}/$f >&2 || : 142 exitok=false 143 fi 144 done 145 echo $exitok` 146 147 cd $TESTBASE 148 149 find * -type f ! -name .DS_Store ! -name CVS ! -name .svn -print \ 150 > ${TESTDIR}/LIST 151 152 exitok=` 153 exec < ${TESTDIR}/LIST 154 while read f 155 do 156 if [ -s $f ] && [ ! -f ${DESTDIR}/$f ] 157 then 158 echo "Missing header fix: $f" >&2 159 exitok=false 160 fi 161 done 162 echo $exitok` 163 164 echo 165 if $exitok 166 then 167 cd ${TESTDIR} 168 rm -rf inc res LIST 169 cd .. 170 rmdir ${TESTDIR} > /dev/null 2>&1 || : 171 echo All fixinclude tests pass >&2 172 else 173 echo There were fixinclude test FAILURES >&2 174 fi 175 $exitok[= 176 177 (if (defined? 'set-writable) (set-writable)) 178 179 =] 180