Mercurial > mm7
comparison lib/swig/swigwin-2.0.11/CCache/test.sh @ 1899:b3009adc0e2f
Adding swig, gitignore, hgignore
author | Nomad |
---|---|
date | Mon, 21 Oct 2013 10:42:27 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
1867:eb580660bbbb | 1899:b3009adc0e2f |
---|---|
1 #!/bin/sh | |
2 | |
3 # a simple test suite for ccache | |
4 # tridge@samba.org | |
5 | |
6 if test -n "$CC"; then | |
7 COMPILER="$CC" | |
8 else | |
9 COMPILER=cc | |
10 fi | |
11 | |
12 if test -n "$SWIG"; then | |
13 SWIG="$SWIG" | |
14 else | |
15 SWIG=swig | |
16 fi | |
17 | |
18 CCACHE=../ccache-swig | |
19 TESTDIR=test.$$ | |
20 | |
21 test_failed() { | |
22 reason="$1" | |
23 echo $1 | |
24 $CCACHE -s | |
25 cd .. | |
26 rm -rf $TESTDIR | |
27 echo TEST FAILED | |
28 exit 1 | |
29 } | |
30 | |
31 randcode() { | |
32 outfile="$1" | |
33 nlines=$2 | |
34 i=0; | |
35 ( | |
36 while [ $i -lt $nlines ]; do | |
37 echo "int foo$nlines$i(int x) { return x; }" | |
38 i=`expr $i + 1` | |
39 done | |
40 ) >> "$outfile" | |
41 } | |
42 | |
43 genswigcode() { | |
44 outfile="$1" | |
45 nlines=$2 | |
46 i=0; | |
47 ( | |
48 echo "%module swigtest$2;" | |
49 while [ $i -lt $nlines ]; do | |
50 echo "int foo$nlines$i(int x);" | |
51 echo "struct Bar$nlines$i { int y; };" | |
52 i=`expr $i + 1` | |
53 done | |
54 ) >> "$outfile" | |
55 } | |
56 | |
57 | |
58 getstat() { | |
59 stat="$1" | |
60 value=`$CCACHE -s | grep "$stat" | cut -c34-40` | |
61 echo $value | |
62 } | |
63 | |
64 checkstat() { | |
65 stat="$1" | |
66 expected_value="$2" | |
67 value=`getstat "$stat"` | |
68 # echo "exp: $expected_value got: $value $testname" | |
69 if [ "$expected_value" != "$value" ]; then | |
70 test_failed "SUITE: $testsuite TEST: $testname - Expected $stat to be $expected_value got $value" | |
71 fi | |
72 } | |
73 | |
74 | |
75 basetests() { | |
76 echo "starting testsuite $testsuite" | |
77 rm -rf "$CCACHE_DIR" | |
78 checkstat 'cache hit' 0 | |
79 checkstat 'cache miss' 0 | |
80 | |
81 j=1 | |
82 rm -f *.c | |
83 while [ $j -lt 32 ]; do | |
84 randcode test$j.c $j | |
85 j=`expr $j + 1` | |
86 done | |
87 | |
88 testname="BASIC" | |
89 $CCACHE_COMPILE -c test1.c | |
90 checkstat 'cache hit' 0 | |
91 checkstat 'cache miss' 1 | |
92 | |
93 testname="BASIC2" | |
94 $CCACHE_COMPILE -c test1.c | |
95 checkstat 'cache hit' 1 | |
96 checkstat 'cache miss' 1 | |
97 | |
98 testname="debug" | |
99 $CCACHE_COMPILE -c test1.c -g | |
100 checkstat 'cache hit' 1 | |
101 checkstat 'cache miss' 2 | |
102 | |
103 testname="debug2" | |
104 $CCACHE_COMPILE -c test1.c -g | |
105 checkstat 'cache hit' 2 | |
106 checkstat 'cache miss' 2 | |
107 | |
108 testname="output" | |
109 $CCACHE_COMPILE -c test1.c -o foo.o | |
110 checkstat 'cache hit' 3 | |
111 checkstat 'cache miss' 2 | |
112 | |
113 testname="link" | |
114 $CCACHE_COMPILE test1.c -o test 2> /dev/null | |
115 checkstat 'called for link' 1 | |
116 | |
117 testname="multiple" | |
118 $CCACHE_COMPILE -c test1.c test2.c | |
119 checkstat 'multiple source files' 1 | |
120 | |
121 testname="find" | |
122 $CCACHE blahblah -c test1.c 2> /dev/null | |
123 checkstat "couldn't find the compiler" 1 | |
124 | |
125 testname="bad" | |
126 $CCACHE_COMPILE -c test1.c -I 2> /dev/null | |
127 checkstat 'bad compiler arguments' 1 | |
128 | |
129 testname="c/c++" | |
130 ln -f test1.c test1.ccc | |
131 $CCACHE_COMPILE -c test1.ccc 2> /dev/null | |
132 checkstat 'not a C/C++ file' 1 | |
133 | |
134 testname="unsupported" | |
135 $CCACHE_COMPILE -M foo -c test1.c > /dev/null 2>&1 | |
136 checkstat 'unsupported compiler option' 1 | |
137 | |
138 testname="stdout" | |
139 $CCACHE echo foo -c test1.c > /dev/null | |
140 checkstat 'compiler produced stdout' 1 | |
141 | |
142 testname="non-regular" | |
143 mkdir testd | |
144 $CCACHE_COMPILE -o testd -c test1.c > /dev/null 2>&1 | |
145 rm -rf testd | |
146 checkstat 'output to a non-regular file' 1 | |
147 | |
148 testname="no-input" | |
149 $CCACHE_COMPILE -c -O2 2> /dev/null | |
150 checkstat 'no input file' 1 | |
151 | |
152 | |
153 testname="CCACHE_DISABLE" | |
154 CCACHE_DISABLE=1 $CCACHE_COMPILE -c test1.c 2> /dev/null | |
155 checkstat 'cache hit' 3 | |
156 $CCACHE_COMPILE -c test1.c | |
157 checkstat 'cache hit' 4 | |
158 | |
159 testname="CCACHE_CPP2" | |
160 CCACHE_CPP2=1 $CCACHE_COMPILE -c test1.c -O -O | |
161 checkstat 'cache hit' 4 | |
162 checkstat 'cache miss' 3 | |
163 | |
164 CCACHE_CPP2=1 $CCACHE_COMPILE -c test1.c -O -O | |
165 checkstat 'cache hit' 5 | |
166 checkstat 'cache miss' 3 | |
167 | |
168 testname="CCACHE_NOSTATS" | |
169 CCACHE_NOSTATS=1 $CCACHE_COMPILE -c test1.c -O -O | |
170 checkstat 'cache hit' 5 | |
171 checkstat 'cache miss' 3 | |
172 | |
173 testname="CCACHE_RECACHE" | |
174 CCACHE_RECACHE=1 $CCACHE_COMPILE -c test1.c -O -O | |
175 checkstat 'cache hit' 5 | |
176 checkstat 'cache miss' 4 | |
177 | |
178 # strictly speaking should be 6 - RECACHE causes a double counting! | |
179 checkstat 'files in cache' 8 | |
180 $CCACHE -c > /dev/null | |
181 checkstat 'files in cache' 6 | |
182 | |
183 | |
184 testname="CCACHE_HASHDIR" | |
185 CCACHE_HASHDIR=1 $CCACHE_COMPILE -c test1.c -O -O | |
186 checkstat 'cache hit' 5 | |
187 checkstat 'cache miss' 5 | |
188 | |
189 CCACHE_HASHDIR=1 $CCACHE_COMPILE -c test1.c -O -O | |
190 checkstat 'cache hit' 6 | |
191 checkstat 'cache miss' 5 | |
192 | |
193 checkstat 'files in cache' 8 | |
194 | |
195 testname="comments" | |
196 echo '/* a silly comment */' > test1-comment.c | |
197 cat test1.c >> test1-comment.c | |
198 $CCACHE_COMPILE -c test1-comment.c | |
199 rm -f test1-comment* | |
200 checkstat 'cache hit' 6 | |
201 checkstat 'cache miss' 6 | |
202 | |
203 testname="CCACHE_UNIFY" | |
204 CCACHE_UNIFY=1 $CCACHE_COMPILE -c test1.c | |
205 checkstat 'cache hit' 6 | |
206 checkstat 'cache miss' 7 | |
207 mv test1.c test1-saved.c | |
208 echo '/* another comment */' > test1.c | |
209 cat test1-saved.c >> test1.c | |
210 CCACHE_UNIFY=1 $CCACHE_COMPILE -c test1.c | |
211 mv test1-saved.c test1.c | |
212 checkstat 'cache hit' 7 | |
213 checkstat 'cache miss' 7 | |
214 | |
215 testname="cache-size" | |
216 for f in *.c; do | |
217 $CCACHE_COMPILE -c $f | |
218 done | |
219 checkstat 'cache hit' 8 | |
220 checkstat 'cache miss' 37 | |
221 checkstat 'files in cache' 72 | |
222 $CCACHE -F 48 -c > /dev/null | |
223 if [ `getstat 'files in cache'` -gt 48 ]; then | |
224 test_failed '-F test failed' | |
225 fi | |
226 | |
227 testname="cpp call" | |
228 $CCACHE_COMPILE -c test1.c -E > test1.i | |
229 checkstat 'cache hit' 8 | |
230 checkstat 'cache miss' 37 | |
231 | |
232 testname="direct .i compile" | |
233 $CCACHE_COMPILE -c test1.c | |
234 checkstat 'cache hit' 8 | |
235 checkstat 'cache miss' 38 | |
236 | |
237 $CCACHE_COMPILE -c test1.i | |
238 checkstat 'cache hit' 9 | |
239 checkstat 'cache miss' 38 | |
240 | |
241 $CCACHE_COMPILE -c test1.i | |
242 checkstat 'cache hit' 10 | |
243 checkstat 'cache miss' 38 | |
244 | |
245 # removed these tests as some compilers (including newer versions of gcc) | |
246 # determine which language to use based on .ii/.i extension, and C++ may | |
247 # not be installed | |
248 # testname="direct .ii file" | |
249 # mv test1.i test1.ii | |
250 # $CCACHE_COMPILE -c test1.ii | |
251 # checkstat 'cache hit' 10 | |
252 # checkstat 'cache miss' 39 | |
253 | |
254 # $CCACHE_COMPILE -c test1.ii | |
255 # checkstat 'cache hit' 11 | |
256 # checkstat 'cache miss' 39 | |
257 | |
258 testname="stripc" # This test might not be portable | |
259 CCACHE_STRIPC=1 $CCACHE_COMPILE -c test1.c | |
260 checkstat 'cache hit' 10 | |
261 checkstat 'cache miss' 39 | |
262 | |
263 CCACHE_STRIPC=1 $CCACHE_COMPILE -c test1.c | |
264 checkstat 'cache hit' 11 | |
265 checkstat 'cache miss' 39 | |
266 | |
267 testname="zero-stats" | |
268 $CCACHE -z > /dev/null | |
269 checkstat 'cache hit' 0 | |
270 checkstat 'cache miss' 0 | |
271 | |
272 testname="clear" | |
273 $CCACHE -C > /dev/null | |
274 checkstat 'files in cache' 0 | |
275 | |
276 | |
277 rm -f test1.c | |
278 } | |
279 | |
280 swigtests() { | |
281 echo "starting swig testsuite $testsuite" | |
282 rm -rf "$CCACHE_DIR" | |
283 checkstat 'cache hit' 0 | |
284 checkstat 'cache miss' 0 | |
285 | |
286 j=1 | |
287 rm -f *.i | |
288 genswigcode testswig1.i 1 | |
289 | |
290 testname="BASIC" | |
291 $CCACHE_COMPILE -java testswig1.i | |
292 checkstat 'cache hit' 0 | |
293 checkstat 'cache miss' 1 | |
294 | |
295 checkstat 'files in cache' 6 | |
296 | |
297 testname="BASIC2" | |
298 $CCACHE_COMPILE -java testswig1.i | |
299 checkstat 'cache hit' 1 | |
300 checkstat 'cache miss' 1 | |
301 | |
302 testname="output" | |
303 $CCACHE_COMPILE -java testswig1.i -o foo_wrap.c | |
304 checkstat 'cache hit' 1 | |
305 checkstat 'cache miss' 2 | |
306 | |
307 testname="bad" | |
308 $CCACHE_COMPILE -java testswig1.i -I 2> /dev/null | |
309 checkstat 'bad compiler arguments' 1 | |
310 | |
311 testname="stdout" | |
312 $CCACHE_COMPILE -v -java testswig1.i > /dev/null | |
313 checkstat 'compiler produced stdout' 1 | |
314 | |
315 testname="non-regular" | |
316 mkdir testd | |
317 $CCACHE_COMPILE -o testd -java testswig1.i > /dev/null 2>&1 | |
318 rm -rf testd | |
319 checkstat 'output to a non-regular file' 1 | |
320 | |
321 testname="no-input" | |
322 $CCACHE_COMPILE -java 2> /dev/null | |
323 checkstat 'no input file' 1 | |
324 | |
325 | |
326 testname="CCACHE_DISABLE" | |
327 CCACHE_DISABLE=1 $CCACHE_COMPILE -java testswig1.i 2> /dev/null | |
328 checkstat 'cache hit' 1 | |
329 $CCACHE_COMPILE -java testswig1.i | |
330 checkstat 'cache hit' 2 | |
331 | |
332 testname="CCACHE_CPP2" | |
333 CCACHE_CPP2=1 $CCACHE_COMPILE -java -O -O testswig1.i | |
334 checkstat 'cache hit' 2 | |
335 checkstat 'cache miss' 3 | |
336 | |
337 CCACHE_CPP2=1 $CCACHE_COMPILE -java -O -O testswig1.i | |
338 checkstat 'cache hit' 3 | |
339 checkstat 'cache miss' 3 | |
340 | |
341 testname="CCACHE_NOSTATS" | |
342 CCACHE_NOSTATS=1 $CCACHE_COMPILE -java -O -O testswig1.i | |
343 checkstat 'cache hit' 3 | |
344 checkstat 'cache miss' 3 | |
345 | |
346 testname="CCACHE_RECACHE" | |
347 CCACHE_RECACHE=1 $CCACHE_COMPILE -java -O -O testswig1.i | |
348 checkstat 'cache hit' 3 | |
349 checkstat 'cache miss' 4 | |
350 | |
351 # strictly speaking should be 3x6=18 instead of 4x6=24 - RECACHE causes a double counting! | |
352 checkstat 'files in cache' 24 | |
353 $CCACHE -c > /dev/null | |
354 checkstat 'files in cache' 18 | |
355 | |
356 | |
357 testname="CCACHE_HASHDIR" | |
358 CCACHE_HASHDIR=1 $CCACHE_COMPILE -java -O -O testswig1.i | |
359 checkstat 'cache hit' 3 | |
360 checkstat 'cache miss' 5 | |
361 | |
362 CCACHE_HASHDIR=1 $CCACHE_COMPILE -java -O -O testswig1.i | |
363 checkstat 'cache hit' 4 | |
364 checkstat 'cache miss' 5 | |
365 | |
366 checkstat 'files in cache' 24 | |
367 | |
368 testname="cpp call" | |
369 $CCACHE_COMPILE -java -E testswig1.i > testswig1-preproc.i | |
370 checkstat 'cache hit' 4 | |
371 checkstat 'cache miss' 5 | |
372 | |
373 testname="direct .i compile" | |
374 $CCACHE_COMPILE -java testswig1.i | |
375 checkstat 'cache hit' 5 | |
376 checkstat 'cache miss' 5 | |
377 | |
378 # No cache hit due to different input file name, -nopreprocess should not be given twice to SWIG | |
379 $CCACHE_COMPILE -java -nopreprocess testswig1-preproc.i | |
380 checkstat 'cache hit' 5 | |
381 checkstat 'cache miss' 6 | |
382 | |
383 $CCACHE_COMPILE -java -nopreprocess testswig1-preproc.i | |
384 checkstat 'cache hit' 6 | |
385 checkstat 'cache miss' 6 | |
386 | |
387 testname="stripc" | |
388 CCACHE_STRIPC=1 $CCACHE_COMPILE -java -O -O testswig1.i | |
389 checkstat 'cache hit' 7 | |
390 checkstat 'cache miss' 6 | |
391 | |
392 CCACHE_STRIPC=1 $CCACHE_COMPILE -java -O -O -O testswig1.i | |
393 checkstat 'cache hit' 7 | |
394 checkstat 'cache miss' 7 | |
395 | |
396 rm -f testswig1-preproc.i | |
397 rm -f testswig1.i | |
398 } | |
399 | |
400 ###### | |
401 # main program | |
402 rm -rf $TESTDIR | |
403 mkdir $TESTDIR | |
404 cd $TESTDIR || exit 1 | |
405 CCACHE_DIR="ccache dir" # with space in directory name (like Windows default) | |
406 mkdir "$CCACHE_DIR" | |
407 export CCACHE_DIR | |
408 | |
409 testsuite="base" | |
410 CCACHE_COMPILE="$CCACHE $COMPILER" | |
411 basetests | |
412 CCACHE_COMPILE="$CCACHE $SWIG" | |
413 swigtests | |
414 | |
415 if test -z "$NOSOFTLINKSTEST"; then | |
416 testsuite="link" | |
417 ln -s $CCACHE $COMPILER | |
418 CCACHE_COMPILE="./$COMPILER" | |
419 basetests | |
420 rm "./$COMPILER" | |
421 ln -s $CCACHE $SWIG | |
422 CCACHE_COMPILE="./$SWIG" | |
423 swigtests | |
424 rm "./$SWIG" | |
425 else | |
426 echo "skipping testsuite link" | |
427 fi | |
428 | |
429 testsuite="hardlink" | |
430 CCACHE_COMPILE="env CCACHE_NOCOMPRESS=1 CCACHE_HARDLINK=1 $CCACHE $COMPILER" | |
431 basetests | |
432 CCACHE_COMPILE="env CCACHE_NOCOMPRESS=1 CCACHE_HARDLINK=1 $CCACHE $SWIG" | |
433 swigtests | |
434 | |
435 testsuite="cpp2" | |
436 CCACHE_COMPILE="env CCACHE_CPP2=1 $CCACHE $COMPILER" | |
437 basetests | |
438 CCACHE_COMPILE="env CCACHE_CPP2=1 $CCACHE $SWIG" | |
439 swigtests | |
440 | |
441 testsuite="nlevels4" | |
442 CCACHE_COMPILE="env CCACHE_NLEVELS=4 $CCACHE $COMPILER" | |
443 basetests | |
444 | |
445 testsuite="nlevels1" | |
446 CCACHE_COMPILE="env CCACHE_NLEVELS=1 $CCACHE $COMPILER" | |
447 basetests | |
448 | |
449 cd .. | |
450 rm -rf $TESTDIR | |
451 echo test done - OK | |
452 exit 0 |