Mercurial > hg > CbC > CbC_gcc
annotate fixincludes/check.tpl @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | 77e2b8dfacca |
children |
rev | line source |
---|---|
0 | 1 [= autogen5 template sh=check.sh =] |
2 [= | |
3 # | |
55
77e2b8dfacca
update it from 4.4.3 to 4.5.0
ryoma <e075725@ie.u-ryukyu.ac.jp>
parents:
0
diff
changeset
|
4 # This file contains the shell template to run tests on the fixes |
0 | 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 =] | |
111 | 88 cat >> [= (raw-shell-str (if (exist? "files") (get "files[0]") "testing.h")) |
89 =] <<_HACK_EOF_ | |
0 | 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 | |
111 | 102 export TEST_MODE=true |
0 | 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 | |
111 | 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 | |
0 | 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 | |
111 | 149 find * -type f ! -name .DS_Store ! -name CVS ! -name .svn -print \ |
150 > ${TESTDIR}/LIST | |
0 | 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 =] |