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