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