Annotation of embedaddon/pcre/RunTest, revision 1.1.1.3
1.1 misho 1: #! /bin/sh
2:
3: # Run the PCRE tests using the pcretest program. The appropriate tests are
4: # selected, depending on which build-time options were used.
5:
6: # All tests are now run both with and without -s, to ensure that everything is
7: # tested with and without studying. However, there are some tests that produce
8: # different output after studying, typically when we are tracing the actual
9: # matching process (for example, using auto-callouts). In these few cases, the
10: # tests are duplicated in the files, one with /S to force studying always, and
11: # one with /SS to force *not* studying always. The use of -s doesn't then make
12: # any difference to their output. There is also one test which compiles invalid
13: # UTF-8 with the UTF-8 check turned off; for this, studying must also be
14: # disabled with /SS.
15:
16: # When JIT support is available, all the tests are also run with -s+ to test
17: # (again, almost) everything with studying and the JIT option. There are also
18: # two tests for JIT-specific features, one to be run when JIT support is
19: # available, and one when it is not.
20:
1.1.1.2 misho 21: # Whichever of the 8-bit and 16-bit libraries exist are tested. It is also
22: # possible to select which to test by the arguments -8 or -16.
23:
24: # Other arguments for this script can be individual test numbers, or the word
1.1 misho 25: # "valgrind", or "sim" followed by an argument to run cross-compiled
26: # executables under a simulator, for example:
27: #
28: # RunTest 3 sim "qemu-arm -s 8388608"
1.1.1.3 ! misho 29: #
! 30: # Finally, if the script is obeyed as "RunTest list", a list of available
! 31: # tests is output, but none of them are run.
! 32:
! 33: # Define test titles in variables so that they can be output as a list. Some
! 34: # of them are modified (e.g. with -8 or -16) when used in the actual tests.
! 35:
! 36: title1="Test 1: Main functionality (Compatible with Perl >= 5.10)"
! 37: title2="Test 2: API, errors, internals, and non-Perl stuff"
! 38: title3="Test 3: Locale-specific features"
! 39: title4A="Test 4: UTF"
! 40: title4B=" support (Compatible with Perl >= 5.10)"
! 41: title5="Test 5: API, internals, and non-Perl stuff for UTF"
! 42: title6="Test 6: Unicode property support (Compatible with Perl >= 5.10)"
! 43: title7="Test 7: API, internals, and non-Perl stuff for Unicode property support"
! 44: title8="Test 8: DFA matching main functionality"
! 45: title9="Test 9: DFA matching with UTF"
! 46: title10="Test 10: DFA matching with Unicode properties"
! 47: title11="Test 11: Internal offsets and code size tests"
! 48: title12="Test 12: JIT-specific features (JIT available)"
! 49: title13="Test 13: JIT-specific features (JIT not available)"
! 50: title14="Test 14: Specials for the basic 8-bit library"
! 51: title15="Test 15: Specials for the 8-bit library with UTF-8 support"
! 52: title16="Test 16: Specials for the 8-bit library with Unicode propery support"
! 53: title17="Test 17: Specials for the basic 16-bit library"
! 54: title18="Test 18: Specials for the 16-bit library with UTF-16 support"
! 55: title19="Test 19: Specials for the 16-bit library with Unicode propery support"
! 56: title20="Test 20: DFA specials for the basic 16-bit library"
! 57: title21="Test 21: Reloads for the basic 16-bit library"
! 58: title22="Test 22: Reloads for the 16-bit library with UTF-16 support"
! 59:
! 60: if [ $# -eq 1 -a "$1" = "list" ]; then
! 61: echo $title1
! 62: echo $title2 "(not UTF)"
! 63: echo $title3
! 64: echo $title4A $title4B
! 65: echo $title5 support
! 66: echo $title6
! 67: echo $title7
! 68: echo $title8
! 69: echo $title9
! 70: echo $title10
! 71: echo $title11
! 72: echo $title12
! 73: echo $title13
! 74: echo $title14
! 75: echo $title15
! 76: echo $title16
! 77: echo $title17
! 78: echo $title18
! 79: echo $title19
! 80: echo $title20
! 81: echo $title21
! 82: echo $title22
! 83: exit 0
! 84: fi
! 85:
! 86: # Default values
1.1 misho 87:
88: valgrind=
89: sim=
1.1.1.2 misho 90: arg8=
91: arg16=
92:
93: # This is in case the caller has set aliases (as I do - PH)
94: unset cp ls mv rm
1.1 misho 95:
96: # Select which tests to run; for those that are explicitly requested, check
97: # that the necessary optional facilities are available.
98:
99: do1=no
100: do2=no
101: do3=no
102: do4=no
103: do5=no
104: do6=no
105: do7=no
106: do8=no
107: do9=no
108: do10=no
109: do11=no
110: do12=no
111: do13=no
112: do14=no
113: do15=no
1.1.1.2 misho 114: do16=no
115: do17=no
116: do18=no
117: do19=no
118: do20=no
119: do21=no
120: do22=no
1.1 misho 121:
122: while [ $# -gt 0 ] ; do
123: case $1 in
124: 1) do1=yes;;
125: 2) do2=yes;;
126: 3) do3=yes;;
127: 4) do4=yes;;
128: 5) do5=yes;;
129: 6) do6=yes;;
130: 7) do7=yes;;
131: 8) do8=yes;;
132: 9) do9=yes;;
133: 10) do10=yes;;
134: 11) do11=yes;;
135: 12) do12=yes;;
136: 13) do13=yes;;
137: 14) do14=yes;;
138: 15) do15=yes;;
1.1.1.2 misho 139: 16) do16=yes;;
140: 17) do17=yes;;
141: 18) do18=yes;;
142: 19) do19=yes;;
143: 20) do20=yes;;
144: 21) do21=yes;;
145: 22) do22=yes;;
146: -8) arg8=yes;;
147: -16) arg16=yes;;
1.1 misho 148: valgrind) valgrind="valgrind -q --smc-check=all";;
149: sim) shift; sim=$1;;
1.1.1.3 ! misho 150: *) echo "Unknown test number '$1'"; exit 1;;
1.1 misho 151: esac
152: shift
153: done
154:
155: # Set up a suitable "diff" command for comparison. Some systems
156: # have a diff that lacks a -u option. Try to deal with this.
157:
158: if diff -u /dev/null /dev/null; then cf="diff -u"; else cf="diff"; fi
159:
160: # Find the test data
161:
162: if [ -n "$srcdir" -a -d "$srcdir" ] ; then
163: testdata="$srcdir/testdata"
164: elif [ -d "./testdata" ] ; then
165: testdata=./testdata
166: elif [ -d "../testdata" ] ; then
167: testdata=../testdata
168: else
169: echo "Cannot find the testdata directory"
170: exit 1
171: fi
172:
173: # Find which optional facilities are available. In some Windows environments
174: # the output of pcretest -C has CRLF at the end of each line, but the shell
175: # strips only linefeeds from the output of a `backquoted` command. Hence the
176: # alternative patterns.
177:
1.1.1.2 misho 178: $sim ./pcretest -C linksize >/dev/null
179: link_size=$?
180: if [ $link_size -lt 2 ] ; then
181: echo "Failed to find internal link size"
182: exit 1
183: fi
184: if [ $link_size -gt 4 ] ; then
185: echo "Failed to find internal link size"
186: exit 1
187: fi
188:
189: # Both 8-bit and 16-bit character strings may be supported, but only one
190: # need be.
191:
192: $sim ./pcretest -C pcre8 >/dev/null
193: support8=$?
194: $sim ./pcretest -C pcre16 >/dev/null
195: support16=$?
1.1.1.3 ! misho 196: if [ `expr $support8 + $support16` -eq 2 ] ; then
1.1.1.2 misho 197: test8=
198: test16=-16
199: if [ "$arg8" = yes -a "$arg16" != yes ] ; then
200: test16=skip
201: fi
202: if [ "$arg16" = yes -a "$arg8" != yes ] ; then
203: test8=skip
204: fi
205: else
206: if [ $support8 -ne 0 ] ; then
207: if [ "$arg16" = yes ] ; then
208: echo "Cannot run 16-bit library tests: 16-bit library not compiled"
209: exit 1
210: fi
211: test8=
212: test16=skip
213: else
214: if [ "$arg8" = yes ] ; then
215: echo "Cannot run 8-bit library tests: 8-bit library not compiled"
216: exit 1
217: fi
218: test8=skip
219: test16=-16
220: fi
221: fi
222:
223: # UTF support always applies to both bit sizes if both are supported; we can't
224: # have UTF-8 support without UTF-16 support (for example).
1.1 misho 225:
1.1.1.2 misho 226: $sim ./pcretest -C utf >/dev/null
227: utf=$?
1.1 misho 228:
1.1.1.2 misho 229: $sim ./pcretest -C ucp >/dev/null
1.1 misho 230: ucp=$?
231:
232: jitopt=
1.1.1.2 misho 233: $sim ./pcretest -C jit >/dev/null
1.1 misho 234: jit=$?
235: if [ $jit -ne 0 ] ; then
236: jitopt=-s+
237: fi
238:
1.1.1.2 misho 239: if [ $utf -eq 0 ] ; then
1.1 misho 240: if [ $do4 = yes ] ; then
1.1.1.2 misho 241: echo "Can't run test 4 because UTF support is not configured"
1.1 misho 242: exit 1
243: fi
244: if [ $do5 = yes ] ; then
1.1.1.2 misho 245: echo "Can't run test 5 because UTF support is not configured"
1.1 misho 246: exit 1
247: fi
1.1.1.2 misho 248: if [ $do9 = yes ] ; then
249: echo "Can't run test 8 because UTF support is not configured"
1.1 misho 250: exit 1
251: fi
1.1.1.2 misho 252: if [ $do15 = yes ] ; then
253: echo "Can't run test 15 because UTF support is not configured"
1.1 misho 254: exit 1
255: fi
1.1.1.2 misho 256: if [ $do18 = yes ] ; then
257: echo "Can't run test 18 because UTF support is not configured"
258: fi
259: if [ $do22 = yes ] ; then
260: echo "Can't run test 22 because UTF support is not configured"
261: fi
1.1 misho 262: fi
263:
264: if [ $ucp -eq 0 ] ; then
265: if [ $do6 = yes ] ; then
266: echo "Can't run test 6 because Unicode property support is not configured"
267: exit 1
268: fi
1.1.1.2 misho 269: if [ $do7 = yes ] ; then
270: echo "Can't run test 7 because Unicode property support is not configured"
1.1 misho 271: exit 1
272: fi
273: if [ $do10 = yes ] ; then
274: echo "Can't run test 10 because Unicode property support is not configured"
275: exit 1
276: fi
1.1.1.2 misho 277: if [ $do16 = yes ] ; then
278: echo "Can't run test 16 because Unicode property support is not configured"
279: exit 1
280: fi
281: if [ $do19 = yes ] ; then
282: echo "Can't run test 19 because Unicode property support is not configured"
1.1 misho 283: exit 1
284: fi
285: fi
286:
287: if [ $link_size -ne 2 ] ; then
1.1.1.2 misho 288: if [ $do11 = yes ] ; then
289: echo "Can't run test 11 because the link size ($link_size) is not 2"
1.1 misho 290: exit 1
291: fi
292: fi
293:
294: if [ $jit -eq 0 ] ; then
1.1.1.2 misho 295: if [ $do12 = "yes" ] ; then
296: echo "Can't run test 12 because JIT support is not configured"
1.1 misho 297: exit 1
298: fi
299: else
1.1.1.2 misho 300: if [ $do13 = "yes" ] ; then
301: echo "Can't run test 13 because JIT support is configured"
1.1 misho 302: exit 1
303: fi
304: fi
305:
306: # If no specific tests were requested, select all. Those that are not
307: # relevant will be skipped.
308:
309: if [ $do1 = no -a $do2 = no -a $do3 = no -a $do4 = no -a \
310: $do5 = no -a $do6 = no -a $do7 = no -a $do8 = no -a \
311: $do9 = no -a $do10 = no -a $do11 = no -a $do12 = no -a \
1.1.1.2 misho 312: $do13 = no -a $do14 = no -a $do15 = no -a $do16 = no -a \
313: $do17 = no -a $do18 = no -a $do19 = no -a $do20 = no -a \
314: $do21 = no -a $do22 = no ] ; then
1.1 misho 315: do1=yes
316: do2=yes
317: do3=yes
318: do4=yes
319: do5=yes
320: do6=yes
321: do7=yes
322: do8=yes
323: do9=yes
324: do10=yes
325: do11=yes
326: do12=yes
327: do13=yes
328: do14=yes
329: do15=yes
1.1.1.2 misho 330: do16=yes
331: do17=yes
332: do18=yes
333: do19=yes
334: do20=yes
335: do21=yes
336: do22=yes
1.1 misho 337: fi
338:
339: # Show which release and which test data
340:
341: echo ""
342: echo PCRE C library tests using test data from $testdata
343: $sim ./pcretest /dev/null
344:
1.1.1.2 misho 345: for bmode in "$test8" "$test16"; do
346: case "$bmode" in
347: skip) continue;;
348: -16) if [ "$test8" != "skip" ] ; then echo ""; fi
349: bits=16; echo "---- Testing 16-bit library ----"; echo "";;
350: *) bits=8; echo "---- Testing 8-bit library ----"; echo "";;
351: esac
352:
1.1 misho 353: # Primary test, compatible with JIT and all versions of Perl >= 5.8
354:
355: if [ $do1 = yes ] ; then
1.1.1.3 ! misho 356: echo $title1
1.1 misho 357: for opt in "" "-s" $jitopt; do
1.1.1.2 misho 358: $sim $valgrind ./pcretest -q $bmode $opt $testdata/testinput1 testtry
1.1 misho 359: if [ $? = 0 ] ; then
360: $cf $testdata/testoutput1 testtry
361: if [ $? != 0 ] ; then exit 1; fi
362: else exit 1
363: fi
364: if [ "$opt" = "-s" ] ; then echo " OK with study"
365: elif [ "$opt" = "-s+" ] ; then echo " OK with JIT study"
366: else echo " OK"
367: fi
368: done
369: fi
370:
371: # PCRE tests that are not JIT or Perl-compatible: API, errors, internals
372:
373: if [ $do2 = yes ] ; then
1.1.1.3 ! misho 374: echo $title2 "(not UTF-$bits)"
1.1 misho 375: for opt in "" "-s" $jitopt; do
1.1.1.2 misho 376: $sim $valgrind ./pcretest -q $bmode $opt $testdata/testinput2 testtry
1.1 misho 377: if [ $? = 0 ] ; then
378: $cf $testdata/testoutput2 testtry
379: if [ $? != 0 ] ; then exit 1; fi
380: else
381: echo " "
382: echo "** Test 2 requires a lot of stack. If it has crashed with a"
383: echo "** segmentation fault, it may be that you do not have enough"
384: echo "** stack available by default. Please see the 'pcrestack' man"
385: echo "** page for a discussion of PCRE's stack usage."
386: echo " "
387: exit 1
388: fi
389: if [ "$opt" = "-s" ] ; then echo " OK with study"
390: elif [ "$opt" = "-s+" ] ; then echo " OK with JIT study"
391: else echo " OK"
392: fi
393: done
394: fi
395:
396: # Locale-specific tests, provided that either the "fr_FR" or the "french"
397: # locale is available. The former is the Unix-like standard; the latter is
398: # for Windows. Another possibility is "fr", which needs to be run against
399: # the Windows-specific input and output files.
400:
401: if [ $do3 = yes ] ; then
402: locale -a | grep '^fr_FR$' >/dev/null
403: if [ $? -eq 0 ] ; then
404: locale=fr_FR
405: infile=$testdata/testinput3
406: outfile=$testdata/testoutput3
407: else
408: infile=test3input
409: outfile=test3output
410: locale -a | grep '^french$' >/dev/null
411: if [ $? -eq 0 ] ; then
412: locale=french
413: sed 's/fr_FR/french/' $testdata/testinput3 >test3input
414: sed 's/fr_FR/french/' $testdata/testoutput3 >test3output
415: else
416: locale -a | grep '^fr$' >/dev/null
417: if [ $? -eq 0 ] ; then
418: locale=fr
419: sed 's/fr_FR/fr/' $testdata/wintestinput3 >test3input
420: sed 's/fr_FR/fr/' $testdata/wintestoutput3 >test3output
421: else
422: locale=
423: fi
424: fi
425: fi
426:
427: if [ "$locale" != "" ] ; then
1.1.1.3 ! misho 428: echo $title3 "(using '$locale' locale)"
1.1 misho 429: for opt in "" "-s" $jitopt; do
1.1.1.2 misho 430: $sim $valgrind ./pcretest -q $bmode $opt $infile testtry
1.1 misho 431: if [ $? = 0 ] ; then
432: $cf $outfile testtry
433: if [ $? != 0 ] ; then
434: echo " "
435: echo "Locale test did not run entirely successfully."
436: echo "This usually means that there is a problem with the locale"
437: echo "settings rather than a bug in PCRE."
438: break;
439: else
440: if [ "$opt" = "-s" ] ; then echo " OK with study"
441: elif [ "$opt" = "-s+" ] ; then echo " OK with JIT study"
442: else echo " OK"
443: fi
444: fi
445: else exit 1
446: fi
447: done
448: else
449: echo "Cannot test locale-specific features - none of the 'fr_FR', 'fr' or"
450: echo "'french' locales exist, or the \"locale\" command is not available"
451: echo "to check for them."
452: echo " "
453: fi
454: fi
455:
1.1.1.2 misho 456: # Additional tests for UTF support
1.1 misho 457:
458: if [ $do4 = yes ] ; then
1.1.1.3 ! misho 459: echo ${title4A}-${bits}${title4B}
1.1.1.2 misho 460: if [ $utf -eq 0 ] ; then
461: echo " Skipped because UTF-$bits support is not available"
1.1 misho 462: else
463: for opt in "" "-s" $jitopt; do
1.1.1.2 misho 464: $sim $valgrind ./pcretest -q $bmode $opt $testdata/testinput4 testtry
1.1 misho 465: if [ $? = 0 ] ; then
466: $cf $testdata/testoutput4 testtry
467: if [ $? != 0 ] ; then exit 1; fi
468: else exit 1
469: fi
470: if [ "$opt" = "-s" ] ; then echo " OK with study"
471: elif [ "$opt" = "-s+" ] ; then echo " OK with JIT study"
472: else echo " OK"
473: fi
474: done
475: fi
476: fi
477:
478: if [ $do5 = yes ] ; then
1.1.1.3 ! misho 479: echo ${title5}-${bits} support
1.1.1.2 misho 480: if [ $utf -eq 0 ] ; then
481: echo " Skipped because UTF-$bits support is not available"
1.1 misho 482: else
483: for opt in "" "-s" $jitopt; do
1.1.1.2 misho 484: $sim $valgrind ./pcretest -q $bmode $opt $testdata/testinput5 testtry
1.1 misho 485: if [ $? = 0 ] ; then
486: $cf $testdata/testoutput5 testtry
487: if [ $? != 0 ] ; then exit 1; fi
488: else exit 1
489: fi
490: if [ "$opt" = "-s" ] ; then echo " OK with study"
491: elif [ "$opt" = "-s+" ] ; then echo " OK with JIT study"
492: else echo " OK"
493: fi
494: done
495: fi
496: fi
497:
498: if [ $do6 = yes ] ; then
1.1.1.3 ! misho 499: echo $title6
1.1.1.2 misho 500: if [ $utf -eq 0 -o $ucp -eq 0 ] ; then
1.1 misho 501: echo " Skipped because Unicode property support is not available"
502: else
503: for opt in "" "-s" $jitopt; do
1.1.1.2 misho 504: $sim $valgrind ./pcretest -q $bmode $opt $testdata/testinput6 testtry
1.1 misho 505: if [ $? = 0 ] ; then
506: $cf $testdata/testoutput6 testtry
507: if [ $? != 0 ] ; then exit 1; fi
508: else exit 1
509: fi
510: if [ "$opt" = "-s" ] ; then echo " OK with study"
511: elif [ "$opt" = "-s+" ] ; then echo " OK with JIT study"
512: else echo " OK"
513: fi
514: done
515: fi
516: fi
517:
1.1.1.2 misho 518: # Test non-Perl-compatible Unicode property support
1.1 misho 519:
520: if [ $do7 = yes ] ; then
1.1.1.3 ! misho 521: echo $title7
1.1.1.2 misho 522: if [ $utf -eq 0 -o $ucp -eq 0 ] ; then
523: echo " Skipped because Unicode property support is not available"
524: else
525: for opt in "" "-s" $jitopt; do
526: $sim $valgrind ./pcretest -q $bmode $opt $testdata/testinput7 testtry
527: if [ $? = 0 ] ; then
528: $cf $testdata/testoutput7 testtry
529: if [ $? != 0 ] ; then exit 1; fi
530: else exit 1
531: fi
532: if [ "$opt" = "-s" ] ; then echo " OK with study"
533: elif [ "$opt" = "-s+" ] ; then echo " OK with JIT study"
534: else echo " OK"
535: fi
536: done
537: fi
538: fi
539:
540: # Tests for DFA matching support
541:
542: if [ $do8 = yes ] ; then
1.1.1.3 ! misho 543: echo $title8
1.1 misho 544: for opt in "" "-s"; do
1.1.1.2 misho 545: $sim $valgrind ./pcretest -q $bmode $opt -dfa $testdata/testinput8 testtry
1.1 misho 546: if [ $? = 0 ] ; then
1.1.1.2 misho 547: $cf $testdata/testoutput8 testtry
1.1 misho 548: if [ $? != 0 ] ; then exit 1; fi
549: else exit 1
550: fi
551: if [ "$opt" = "-s" ] ; then echo " OK with study" ; else echo " OK"; fi
552: done
553: fi
554:
1.1.1.2 misho 555: if [ $do9 = yes ] ; then
1.1.1.3 ! misho 556: echo ${title9}-${bits}
1.1.1.2 misho 557: if [ $utf -eq 0 ] ; then
558: echo " Skipped because UTF-$bits support is not available"
1.1 misho 559: else
560: for opt in "" "-s"; do
1.1.1.2 misho 561: $sim $valgrind ./pcretest -q $bmode $opt -dfa $testdata/testinput9 testtry
1.1 misho 562: if [ $? = 0 ] ; then
1.1.1.2 misho 563: $cf $testdata/testoutput9 testtry
1.1 misho 564: if [ $? != 0 ] ; then exit 1; fi
565: else exit 1
566: fi
567: if [ "$opt" = "-s" ] ; then echo " OK with study" ; else echo " OK"; fi
568: done
569: fi
570: fi
571:
1.1.1.2 misho 572: if [ $do10 = yes ] ; then
1.1.1.3 ! misho 573: echo $title10
1.1.1.2 misho 574: if [ $utf -eq 0 -o $ucp -eq 0 ] ; then
1.1 misho 575: echo " Skipped because Unicode property support is not available"
576: else
577: for opt in "" "-s"; do
1.1.1.2 misho 578: $sim $valgrind ./pcretest -q $bmode $opt -dfa $testdata/testinput10 testtry
1.1 misho 579: if [ $? = 0 ] ; then
1.1.1.2 misho 580: $cf $testdata/testoutput10 testtry
1.1 misho 581: if [ $? != 0 ] ; then exit 1; fi
582: else exit 1
583: fi
584: if [ "$opt" = "-s" ] ; then echo " OK with study" ; else echo " OK"; fi
585: done
586: fi
587: fi
588:
589: # Test of internal offsets and code sizes. This test is run only when there
590: # is Unicode property support and the link size is 2. The actual tests are
591: # mostly the same as in some of the above, but in this test we inspect some
592: # offsets and sizes that require a known link size. This is a doublecheck for
1.1.1.2 misho 593: # the maintainer, just in case something changes unexpectely. The output from
594: # this test is not the same in 8-bit and 16-bit modes.
1.1 misho 595:
1.1.1.2 misho 596: if [ $do11 = yes ] ; then
1.1.1.3 ! misho 597: echo $title11
1.1 misho 598: if [ $link_size -ne 2 ] ; then
599: echo " Skipped because link size is not 2"
600: elif [ $ucp -eq 0 ] ; then
601: echo " Skipped because Unicode property support is not available"
602: else
603: for opt in "" "-s"; do
1.1.1.2 misho 604: $sim $valgrind ./pcretest -q $bmode $opt $testdata/testinput11 testtry
1.1 misho 605: if [ $? = 0 ] ; then
1.1.1.2 misho 606: $cf $testdata/testoutput11-$bits testtry
1.1 misho 607: if [ $? != 0 ] ; then exit 1; fi
608: else exit 1
609: fi
610: if [ "$opt" = "-s" ] ; then echo " OK with study" ; else echo " OK"; fi
611: done
612: fi
613: fi
614:
1.1.1.2 misho 615: # Test JIT-specific features when JIT is available
1.1 misho 616:
1.1.1.2 misho 617: if [ $do12 = yes ] ; then
1.1.1.3 ! misho 618: echo $title12
1.1.1.2 misho 619: if [ $jit -eq 0 ] ; then
620: echo " Skipped because JIT is not available or not usable"
621: else
622: $sim $valgrind ./pcretest -q $bmode $testdata/testinput12 testtry
1.1 misho 623: if [ $? = 0 ] ; then
1.1.1.2 misho 624: $cf $testdata/testoutput12 testtry
1.1 misho 625: if [ $? != 0 ] ; then exit 1; fi
626: else exit 1
627: fi
1.1.1.2 misho 628: echo " OK"
629: fi
630: fi
631:
632: # Test JIT-specific features when JIT is not available
633:
634: if [ $do13 = yes ] ; then
1.1.1.3 ! misho 635: echo $title13
1.1.1.2 misho 636: if [ $jit -ne 0 ] ; then
637: echo " Skipped because JIT is available"
638: else
639: $sim $valgrind ./pcretest -q $bmode $testdata/testinput13 testtry
640: if [ $? = 0 ] ; then
641: $cf $testdata/testoutput13 testtry
642: if [ $? != 0 ] ; then exit 1; fi
643: else exit 1
1.1 misho 644: fi
1.1.1.2 misho 645: echo " OK"
646: fi
1.1 misho 647: fi
648:
1.1.1.2 misho 649: # Tests for 8-bit-specific features
1.1 misho 650:
1.1.1.2 misho 651: if [ "$do14" = yes ] ; then
1.1.1.3 ! misho 652: echo $title14
1.1.1.2 misho 653: if [ "$bits" = "16" ] ; then
654: echo " Skipped when running 16-bit tests"
1.1 misho 655: else
1.1.1.2 misho 656: cp -f $testdata/saved16 testsaved16
1.1 misho 657: for opt in "" "-s" $jitopt; do
1.1.1.2 misho 658: $sim $valgrind ./pcretest -q $bmode $opt $testdata/testinput14 testtry
1.1 misho 659: if [ $? = 0 ] ; then
1.1.1.2 misho 660: $cf $testdata/testoutput14 testtry
1.1 misho 661: if [ $? != 0 ] ; then exit 1; fi
662: else exit 1
663: fi
664: if [ "$opt" = "-s" ] ; then echo " OK with study"
665: elif [ "$opt" = "-s+" ] ; then echo " OK with JIT study"
666: else echo " OK"
667: fi
668: done
669: fi
670: fi
671:
1.1.1.2 misho 672: # Tests for 8-bit-specific features (needs UTF-8 support)
1.1 misho 673:
1.1.1.2 misho 674: if [ "$do15" = yes ] ; then
1.1.1.3 ! misho 675: echo $title15
1.1.1.2 misho 676: if [ "$bits" = "16" ] ; then
677: echo " Skipped when running 16-bit tests"
678: elif [ $utf -eq 0 ] ; then
679: echo " Skipped because UTF-$bits support is not available"
680: else
681: for opt in "" "-s" $jitopt; do
682: $sim $valgrind ./pcretest -q $bmode $opt $testdata/testinput15 testtry
683: if [ $? = 0 ] ; then
684: $cf $testdata/testoutput15 testtry
685: if [ $? != 0 ] ; then exit 1; fi
686: else exit 1
687: fi
688: if [ "$opt" = "-s" ] ; then echo " OK with study"
689: elif [ "$opt" = "-s+" ] ; then echo " OK with JIT study"
690: else echo " OK"
691: fi
692: done
693: fi
694: fi
695:
696: # Tests for 8-bit-specific features (Unicode property support)
697:
698: if [ $do16 = yes ] ; then
1.1.1.3 ! misho 699: echo $title16
1.1.1.2 misho 700: if [ "$bits" = "16" ] ; then
701: echo " Skipped when running 16-bit tests"
702: elif [ $ucp -eq 0 ] ; then
1.1 misho 703: echo " Skipped because Unicode property support is not available"
704: else
705: for opt in "" "-s" $jitopt; do
1.1.1.2 misho 706: $sim $valgrind ./pcretest -q $bmode $opt $testdata/testinput16 testtry
1.1 misho 707: if [ $? = 0 ] ; then
1.1.1.2 misho 708: $cf $testdata/testoutput16 testtry
1.1 misho 709: if [ $? != 0 ] ; then exit 1; fi
710: else exit 1
711: fi
712: if [ "$opt" = "-s" ] ; then echo " OK with study"
713: elif [ "$opt" = "-s+" ] ; then echo " OK with JIT study"
714: else echo " OK"
715: fi
716: done
717: fi
718: fi
719:
1.1.1.2 misho 720: # Tests for 16-bit-specific features
1.1 misho 721:
1.1.1.2 misho 722: if [ $do17 = yes ] ; then
1.1.1.3 ! misho 723: echo $title17
1.1.1.2 misho 724: if [ "$bits" = "8" ] ; then
725: echo " Skipped when running 8-bit tests"
726: else
727: for opt in "" "-s" $jitopt; do
728: $sim $valgrind ./pcretest -q $bmode $opt $testdata/testinput17 testtry
729: if [ $? = 0 ] ; then
730: $cf $testdata/testoutput17 testtry
731: if [ $? != 0 ] ; then exit 1; fi
732: else exit 1
733: fi
734: if [ "$opt" = "-s" ] ; then echo " OK with study"
735: elif [ "$opt" = "-s+" ] ; then echo " OK with JIT study"
736: else echo " OK"
737: fi
738: done
739: fi
740: fi
741:
742: # Tests for 16-bit-specific features (UTF-16 support)
743:
744: if [ $do18 = yes ] ; then
1.1.1.3 ! misho 745: echo $title18
1.1.1.2 misho 746: if [ "$bits" = "8" ] ; then
747: echo " Skipped when running 8-bit tests"
748: elif [ $utf -eq 0 ] ; then
749: echo " Skipped because UTF-$bits support is not available"
1.1 misho 750: else
1.1.1.2 misho 751: for opt in "" "-s" $jitopt; do
752: $sim $valgrind ./pcretest -q $bmode $opt $testdata/testinput18 testtry
753: if [ $? = 0 ] ; then
754: $cf $testdata/testoutput18 testtry
755: if [ $? != 0 ] ; then exit 1; fi
756: else exit 1
757: fi
758: if [ "$opt" = "-s" ] ; then echo " OK with study"
759: elif [ "$opt" = "-s+" ] ; then echo " OK with JIT study"
760: else echo " OK"
761: fi
762: done
763: fi
764: fi
765:
766: # Tests for 16-bit-specific features (Unicode property support)
767:
768: if [ $do19 = yes ] ; then
1.1.1.3 ! misho 769: echo $title19
1.1.1.2 misho 770: if [ "$bits" = "8" ] ; then
771: echo " Skipped when running 8-bit tests"
772: elif [ $ucp -eq 0 ] ; then
773: echo " Skipped because Unicode property support is not available"
774: else
775: for opt in "" "-s" $jitopt; do
776: $sim $valgrind ./pcretest -q $bmode $opt $testdata/testinput19 testtry
777: if [ $? = 0 ] ; then
778: $cf $testdata/testoutput19 testtry
779: if [ $? != 0 ] ; then exit 1; fi
780: else exit 1
781: fi
782: if [ "$opt" = "-s" ] ; then echo " OK with study"
783: elif [ "$opt" = "-s+" ] ; then echo " OK with JIT study"
784: else echo " OK"
785: fi
786: done
787: fi
788: fi
789:
790: # Tests for 16-bit-specific features in DFA non-UTF-16 mode
791:
792: if [ $do20 = yes ] ; then
1.1.1.3 ! misho 793: echo $title20
1.1.1.2 misho 794: if [ "$bits" = "8" ] ; then
795: echo " Skipped when running 8-bit tests"
796: else
797: for opt in "" "-s"; do
798: $sim $valgrind ./pcretest -q $bmode $opt $testdata/testinput20 testtry
799: if [ $? = 0 ] ; then
800: $cf $testdata/testoutput20 testtry
801: if [ $? != 0 ] ; then exit 1; fi
802: else exit 1
803: fi
804: if [ "$opt" = "-s" ] ; then echo " OK with study"
805: else echo " OK"
806: fi
807: done
808: fi
809: fi
810:
811: # Tests for reloads with 16-bit library
812:
813: if [ $do21 = yes ] ; then
1.1.1.3 ! misho 814: echo $title21
1.1.1.2 misho 815: if [ "$bits" = "8" ] ; then
816: echo " Skipped when running 8-bit tests"
817: elif [ $link_size -ne 2 ] ; then
818: echo " Skipped because link size is not 2"
819: else
820: cp -f $testdata/saved8 testsaved8
821: cp -f $testdata/saved16LE-1 testsaved16LE-1
822: cp -f $testdata/saved16BE-1 testsaved16BE-1
823: $sim $valgrind ./pcretest -q $bmode $testdata/testinput21 testtry
1.1 misho 824: if [ $? = 0 ] ; then
1.1.1.2 misho 825: $cf $testdata/testoutput21 testtry
1.1 misho 826: if [ $? != 0 ] ; then exit 1; fi
827: else exit 1
828: fi
829: echo " OK"
830: fi
831: fi
832:
1.1.1.2 misho 833: # Tests for reloads with 16-bit library (UTF-16 support)
1.1 misho 834:
1.1.1.2 misho 835: if [ $do22 = yes ] ; then
1.1.1.3 ! misho 836: echo $title22
1.1.1.2 misho 837: if [ "$bits" = "8" ] ; then
838: echo " Skipped when running 8-bit tests"
839: elif [ $utf -eq 0 ] ; then
840: echo " Skipped because UTF-$bits support is not available"
841: elif [ $link_size -ne 2 ] ; then
842: echo " Skipped because link size is not 2"
1.1 misho 843: else
1.1.1.2 misho 844: cp -f $testdata/saved16LE-2 testsaved16LE-2
845: cp -f $testdata/saved16BE-2 testsaved16BE-2
846: $sim $valgrind ./pcretest -q $bmode $testdata/testinput22 testtry
1.1 misho 847: if [ $? = 0 ] ; then
1.1.1.2 misho 848: $cf $testdata/testoutput22 testtry
1.1 misho 849: if [ $? != 0 ] ; then exit 1; fi
850: else exit 1
851: fi
852: echo " OK"
853: fi
854: fi
855:
1.1.1.2 misho 856: # End of loop for 8-bit/16-bit tests
857: done
858:
859: # Clean up local working files
860: rm -f test3input test3output testNinput testsaved* teststderr teststdout testtry
861:
1.1 misho 862: # End
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>