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