/[pcre]/code/trunk/RunTest
ViewVC logotype

Contents of /code/trunk/RunTest

Parent Directory Parent Directory | Revision Log Revision Log


Revision 612 - (hide annotations) (download)
Sat Jul 2 15:20:59 2011 UTC (22 months, 3 weeks ago) by ph10
File size: 10474 byte(s)
Fix two study bugs concerned with minimum subject lengths; add features to 
pcretest so that all tests can be run with or without study; adjust tests so 
that this happens.

1 nigel 49 #! /bin/sh
2    
3 ph10 612 # Run the PCRE tests using the pcretest program. All tests are now run both
4     # with and without -s, to ensure that everything is tested with and without
5     # studying. However, there are some tests that produce different output after
6     # studying, typically when we are tracing the actual matching process (for
7     # example, using auto-callouts). In these few cases, the tests are duplicated
8     # in the files, one with /S to force studying always, and one with /SS to force
9     # *not* studying always. The use of -s doesn't then make any difference to
10     # their output. There is also one test which compiles invalid UTF-8 with the
11     # UTF-8 check turned off for which studying is disabled with /SS.
12 nigel 49
13 nigel 87 valgrind=
14 ph10 339
15     # Set up a suitable "diff" command for comparison. Some systems
16     # have a diff that lacks a -u option. Try to deal with this.
17    
18     if diff -u /dev/null /dev/null; then cf="diff -u"; else cf="diff"; fi
19    
20     # Find the test data
21    
22 ph10 137 testdata=testdata
23     if [ -n "$srcdir" -a -d "$srcdir" ] ; then
24     testdata="$srcdir/testdata"
25 nigel 81 fi
26 nigel 49
27 ph10 116 # Find which optional facilities are available
28 nigel 87
29 ph10 116 case `./pcretest -C | ./pcregrep 'Internal link size'` in
30     *2) link_size=2;;
31     *3) link_size=3;;
32     *4) link_size=4;;
33     *) echo "Failed to find internal link size"; exit 1;;
34     esac
35 nigel 49
36 ph10 116 ./pcretest -C | ./pcregrep 'No UTF-8 support' >/dev/null
37     utf8=$?
38    
39     ./pcretest -C | ./pcregrep 'No Unicode properties support' >/dev/null
40     ucp=$?
41    
42     # Select which tests to run; for those that are explicitly requested, check
43     # that the necessary optional facilities are available.
44    
45 nigel 49 do1=no
46     do2=no
47     do3=no
48     do4=no
49     do5=no
50 nigel 75 do6=no
51 nigel 77 do7=no
52     do8=no
53     do9=no
54 ph10 164 do10=no
55 ph10 448 do11=no
56     do12=no
57 nigel 49
58     while [ $# -gt 0 ] ; do
59     case $1 in
60     1) do1=yes;;
61     2) do2=yes;;
62     3) do3=yes;;
63     4) do4=yes;;
64 nigel 77 5) do5=yes;;
65     6) do6=yes;;
66     7) do7=yes;;
67     8) do8=yes;;
68     9) do9=yes;;
69 ph10 165 10) do10=yes;;
70 ph10 448 11) do11=yes;;
71 ph10 461 12) do12=yes;;
72 ph10 164 valgrind) valgrind="valgrind -q";;
73 nigel 49 *) echo "Unknown test number $1"; exit 1;;
74     esac
75     shift
76     done
77    
78 ph10 116 if [ $utf8 -eq 0 ] ; then
79 nigel 63 if [ $do4 = yes ] ; then
80 nigel 75 echo "Can't run test 4 because UTF-8 support is not configured"
81 nigel 63 exit 1
82 nigel 77 fi
83 nigel 49 if [ $do5 = yes ] ; then
84 nigel 75 echo "Can't run test 5 because UTF-8 support is not configured"
85 nigel 49 exit 1
86 nigel 77 fi
87     if [ $do8 = yes ] ; then
88     echo "Can't run test 8 because UTF-8 support is not configured"
89     exit 1
90     fi
91     fi
92 nigel 49
93 ph10 116 if [ $ucp -eq 0 ] ; then
94 nigel 75 if [ $do6 = yes ] ; then
95     echo "Can't run test 6 because Unicode property support is not configured"
96     exit 1
97     fi
98 nigel 77 if [ $do9 = yes ] ; then
99     echo "Can't run test 9 because Unicode property support is not configured"
100     exit 1
101     fi
102 ph10 164 if [ $do10 = yes ] ; then
103     echo "Can't run test 10 because Unicode property support is not configured"
104     exit 1
105     fi
106 ph10 448 if [ $do12 = yes ] ; then
107     echo "Can't run test 12 because Unicode property support is not configured"
108     exit 1
109     fi
110 nigel 77 fi
111 nigel 75
112 ph10 164 if [ $link_size -ne 2 ] ; then
113     if [ $do10 = yes ] ; then
114     echo "Can't run test 10 because the link size ($link_size) is not 2"
115     exit 1
116     fi
117 ph10 165 fi
118 ph10 164
119 ph10 116 # If no specific tests were requested, select all that are relevant.
120    
121 nigel 75 if [ $do1 = no -a $do2 = no -a $do3 = no -a $do4 = no -a \
122 nigel 77 $do5 = no -a $do6 = no -a $do7 = no -a $do8 = no -a \
123 ph10 448 $do9 = no -a $do10 = no -a $do11 = no -a $do12 = no ] ; then
124 nigel 49 do1=yes
125 ph10 247 do2=yes
126 nigel 49 do3=yes
127 ph10 116 if [ $utf8 -ne 0 ] ; then do4=yes; fi
128 ph10 247 if [ $utf8 -ne 0 ] ; then do5=yes; fi
129 ph10 116 if [ $utf8 -ne 0 -a $ucp -ne 0 ] ; then do6=yes; fi
130 ph10 247 do7=yes
131     if [ $utf8 -ne 0 ] ; then do8=yes; fi
132 ph10 116 if [ $utf8 -ne 0 -a $ucp -ne 0 ] ; then do9=yes; fi
133 ph10 173 if [ $link_size -eq 2 -a $ucp -ne 0 ] ; then do10=yes; fi
134 ph10 448 do11=yes
135 ph10 461 if [ $utf8 -ne 0 -a $ucp -ne 0 ] ; then do12=yes; fi
136 nigel 49 fi
137    
138 nigel 73 # Show which release
139    
140 ph10 128 echo ""
141     echo PCRE C library tests
142 nigel 73 ./pcretest /dev/null
143    
144 ph10 559 # Primary test, compatible with all versions of Perl >= 5.8
145 nigel 49
146     if [ $do1 = yes ] ; then
147 ph10 559 echo "Test 1: main functionality (Compatible with Perl >= 5.8)"
148 ph10 612 for opt in "" "-s"; do
149     $valgrind ./pcretest -q $opt $testdata/testinput1 testtry
150     if [ $? = 0 ] ; then
151     $cf $testdata/testoutput1 testtry
152     if [ $? != 0 ] ; then exit 1; fi
153     else exit 1
154     fi
155     if [ "$opt" = "-s" ] ; then echo "OK with study" ; else echo "OK"; fi
156     done
157 nigel 49 fi
158    
159 ph10 449 # PCRE tests that are not Perl-compatible - API, errors, internals
160 nigel 49
161     if [ $do2 = yes ] ; then
162 ph10 449 echo "Test 2: API, errors, internals, and non-Perl stuff"
163 ph10 612 for opt in "" "-s"; do
164     $valgrind ./pcretest -q $opt $testdata/testinput2 testtry
165     if [ $? = 0 ] ; then
166     $cf $testdata/testoutput2 testtry
167     if [ $? != 0 ] ; then exit 1; fi
168     else
169     echo " "
170     echo "** Test 2 requires a lot of stack. If it has crashed with a"
171     echo "** segmentation fault, it may be that you do not have enough"
172     echo "** stack available by default. Please see the 'pcrestack' man"
173     echo "** page for a discussion of PCRE's stack usage."
174     echo " "
175     exit 1
176     fi
177     if [ "$opt" = "-s" ] ; then echo "OK with study" ; else echo "OK"; fi
178     done
179 nigel 49 fi
180    
181 ph10 157 # Locale-specific tests, provided that either the "fr_FR" or the "french"
182     # locale is available. The former is the Unix-like standard; the latter is
183     # for Windows.
184 nigel 49
185 nigel 63 if [ $do3 = yes ] ; then
186 nigel 73 locale -a | grep '^fr_FR$' >/dev/null
187 nigel 49 if [ $? -eq 0 ] ; then
188 ph10 157 locale=fr_FR
189     infile=$testdata/testinput3
190     outfile=$testdata/testoutput3
191     else
192     locale -a | grep '^french$' >/dev/null
193     if [ $? -eq 0 ] ; then
194     locale=french
195     sed 's/fr_FR/french/' $testdata/testinput3 >test3input
196     sed 's/fr_FR/french/' $testdata/testoutput3 >test3output
197     infile=test3input
198 ph10 159 outfile=test3output
199 ph10 157 else
200 ph10 159 locale=
201 ph10 157 fi
202 ph10 159 fi
203 ph10 157
204     if [ "$locale" != "" ] ; then
205     echo "Test 3: locale-specific features (using '$locale' locale)"
206 ph10 612 for opt in "" "-s"; do
207     $valgrind ./pcretest -q $opt $infile testtry
208     if [ $? = 0 ] ; then
209     $cf $outfile testtry
210     if [ $? != 0 ] ; then
211     echo " "
212     echo "Locale test did not run entirely successfully."
213     echo "This usually means that there is a problem with the locale"
214     echo "settings rather than a bug in PCRE."
215     break;
216     else
217     if [ "$opt" = "-s" ] ; then echo "OK with study" ; else echo "OK"; fi
218     fi
219     else exit 1
220 nigel 77 fi
221 ph10 612 done
222 nigel 49 else
223 ph10 157 echo "Cannot test locale-specific features - neither the 'fr_FR' nor the"
224     echo "'french' locale exists, or the \"locale\" command is not available"
225     echo "to check for them."
226 nigel 77 echo " "
227 nigel 49 fi
228     fi
229    
230     # Additional tests for UTF8 support
231    
232 nigel 63 if [ $do4 = yes ] ; then
233 ph10 559 echo "Test 4: UTF-8 support (Compatible with Perl >= 5.8)"
234 ph10 612 for opt in "" "-s"; do
235     $valgrind ./pcretest -q $opt $testdata/testinput4 testtry
236     if [ $? = 0 ] ; then
237     $cf $testdata/testoutput4 testtry
238     if [ $? != 0 ] ; then exit 1; fi
239     else exit 1
240     fi
241     if [ "$opt" = "-s" ] ; then echo "OK with study" ; else echo "OK"; fi
242     done
243 nigel 49 fi
244    
245 nigel 63 if [ $do5 = yes ] ; then
246 ph10 426 echo "Test 5: API, internals, and non-Perl stuff for UTF-8 support"
247 ph10 612 for opt in "" "-s"; do
248     $valgrind ./pcretest -q $opt $testdata/testinput5 testtry
249     if [ $? = 0 ] ; then
250     $cf $testdata/testoutput5 testtry
251     if [ $? != 0 ] ; then exit 1; fi
252     else exit 1
253     fi
254     if [ "$opt" = "-s" ] ; then echo "OK with study" ; else echo "OK"; fi
255     done
256 nigel 49 fi
257    
258 nigel 75 if [ $do6 = yes ] ; then
259 ph10 559 echo "Test 6: Unicode property support (Compatible with Perl >= 5.10)"
260 ph10 612 for opt in "" "-s"; do
261     $valgrind ./pcretest -q $opt $testdata/testinput6 testtry
262     if [ $? = 0 ] ; then
263     $cf $testdata/testoutput6 testtry
264     if [ $? != 0 ] ; then exit 1; fi
265     else exit 1
266     fi
267     if [ "$opt" = "-s" ] ; then echo "OK with study" ; else echo "OK"; fi
268     done
269 nigel 75 fi
270    
271 nigel 77 # Tests for DFA matching support
272    
273     if [ $do7 = yes ] ; then
274     echo "Test 7: DFA matching"
275 ph10 612 for opt in "" "-s"; do
276     $valgrind ./pcretest -q $opt -dfa $testdata/testinput7 testtry
277     if [ $? = 0 ] ; then
278     $cf $testdata/testoutput7 testtry
279     if [ $? != 0 ] ; then exit 1; fi
280     else exit 1
281     fi
282     if [ "$opt" = "-s" ] ; then echo "OK with study" ; else echo "OK"; fi
283     done
284 nigel 77 fi
285    
286     if [ $do8 = yes ] ; then
287     echo "Test 8: DFA matching with UTF-8"
288 ph10 612 for opt in "" "-s"; do
289     $valgrind ./pcretest -q $opt -dfa $testdata/testinput8 testtry
290     if [ $? = 0 ] ; then
291     $cf $testdata/testoutput8 testtry
292     if [ $? != 0 ] ; then exit 1; fi
293     else exit 1
294     fi
295     if [ "$opt" = "-s" ] ; then echo "OK with study" ; else echo "OK"; fi
296     done
297 nigel 77 fi
298    
299     if [ $do9 = yes ] ; then
300     echo "Test 9: DFA matching with Unicode properties"
301 ph10 612 for opt in "" "-s"; do
302     $valgrind ./pcretest -q $opt -dfa $testdata/testinput9 testtry
303     if [ $? = 0 ] ; then
304     $cf $testdata/testoutput9 testtry
305     if [ $? != 0 ] ; then exit 1; fi
306     else exit 1
307     fi
308     if [ "$opt" = "-s" ] ; then echo "OK with study" ; else echo "OK"; fi
309     done
310 nigel 77 fi
311    
312 ph10 164 # Test of internal offsets and code sizes. This test is run only when there
313     # is Unicode property support and the link size is 2. The actual tests are
314     # mostly the same as in some of the above, but in this test we inspect some
315     # offsets and sizes that require a known link size. This is a doublecheck for
316     # the maintainer, just in case something changes unexpectely.
317    
318     if [ $do10 = yes ] ; then
319     echo "Test 10: Internal offsets and code size tests"
320 ph10 612 for opt in "" "-s"; do
321     $valgrind ./pcretest -q $opt $testdata/testinput10 testtry
322     if [ $? = 0 ] ; then
323     $cf $testdata/testoutput10 testtry
324     if [ $? != 0 ] ; then exit 1; fi
325     else exit 1
326     fi
327     if [ "$opt" = "-s" ] ; then echo "OK with study" ; else echo "OK"; fi
328     done
329 ph10 164 fi
330    
331 ph10 559 # Test of Perl >= 5.10 features
332 ph10 448
333     if [ $do11 = yes ] ; then
334 ph10 559 echo "Test 11: Features from Perl >= 5.10"
335 ph10 612 for opt in "" "-s"; do
336     $valgrind ./pcretest -q $opt $testdata/testinput11 testtry
337     if [ $? = 0 ] ; then
338     $cf $testdata/testoutput11 testtry
339     if [ $? != 0 ] ; then exit 1; fi
340     else exit 1
341     fi
342     if [ "$opt" = "-s" ] ; then echo "OK with study" ; else echo "OK"; fi
343     done
344 ph10 448 fi
345    
346     # Test non-Perl-compatible Unicode property support
347    
348     if [ $do12 = yes ] ; then
349     echo "Test 12: API, internals, and non-Perl stuff for Unicode property support"
350 ph10 612 for opt in "" "-s"; do
351     $valgrind ./pcretest -q $opt $testdata/testinput12 testtry
352     if [ $? = 0 ] ; then
353     $cf $testdata/testoutput12 testtry
354     if [ $? != 0 ] ; then exit 1; fi
355     else exit 1
356     fi
357     if [ "$opt" = "-s" ] ; then echo "OK with study" ; else echo "OK"; fi
358     done
359 ph10 448 fi
360    
361 nigel 49 # End

Properties

Name Value
svn:executable *
svn:keywords "Author Date Id Revision Url"

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12