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

Diff of /code/trunk/RunTest

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

code/trunk/RunTest.in revision 97 by ph10, Mon Mar 5 12:36:47 2007 UTC code/trunk/RunTest revision 903 by ph10, Sat Jan 21 16:37:17 2012 UTC
# Line 1  Line 1 
1  #! /bin/sh  #! /bin/sh
2    
3  # This file is generated by configure from RunTest.in. Make any changes  # Run the PCRE tests using the pcretest program. The appropriate tests are
4  # to that file.  # selected, depending on which build-time options were used.
5    
6  # TODO: Replace use of variables @LINK_SIZE@, @UTF8@ and @UCP@ with  # All tests are now run both with and without -s, to ensure that everything is
7  #       the data found from the output of 'pcretest -C' instead.  # 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    
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
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    
 # Run PCRE tests  
   
 cf=diff  
30  valgrind=  valgrind=
31  if [ ! -d testdata ] ; then  sim=
32    ln -s @top_srcdir@/testdata testdata  arg8=
33  fi  arg16=
 testdata=./testdata  
34    
35    # This is in case the caller has set aliases (as I do - PH)
36    unset cp ls mv rm
37    
38  # Select which tests to run; if no selection, run all  # Select which tests to run; for those that are explicitly requested, check
39    # that the necessary optional facilities are available.
40    
41  do1=no  do1=no
42  do2=no  do2=no
# Line 27  do6=no Line 47  do6=no
47  do7=no  do7=no
48  do8=no  do8=no
49  do9=no  do9=no
50    do10=no
51    do11=no
52    do12=no
53    do13=no
54    do14=no
55    do15=no
56    do16=no
57    do17=no
58    do18=no
59    do19=no
60    do20=no
61    do21=no
62    do22=no
63    
64  while [ $# -gt 0 ] ; do  while [ $# -gt 0 ] ; do
65    case $1 in    case $1 in
# Line 39  while [ $# -gt 0 ] ; do Line 72  while [ $# -gt 0 ] ; do
72      7) do7=yes;;      7) do7=yes;;
73      8) do8=yes;;      8) do8=yes;;
74      9) do9=yes;;      9) do9=yes;;
75      valgrind) valgrind="valgrind -q";;     10) do10=yes;;
76       11) do11=yes;;
77       12) do12=yes;;
78       13) do13=yes;;
79       14) do14=yes;;
80       15) do15=yes;;
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;;
90       valgrind) valgrind="valgrind -q --smc-check=all";;
91       sim) shift; sim=$1;;
92      *) echo "Unknown test number $1"; exit 1;;      *) echo "Unknown test number $1"; exit 1;;
93    esac    esac
94    shift    shift
95  done  done
96    
97  if [ "@LINK_SIZE@" != "2" ] ; then  # Set up a suitable "diff" command for comparison. Some systems
98    if [ $do2 = yes ] ; then  # have a diff that lacks a -u option. Try to deal with this.
99      echo "Can't run test 2 with an internal link size other than 2"  
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    
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).
167    
168    $sim ./pcretest -C utf >/dev/null
169    utf=$?
170    
171    $sim ./pcretest -C ucp >/dev/null
172    ucp=$?
173    
174    jitopt=
175    $sim ./pcretest -C jit >/dev/null
176    jit=$?
177    if [ $jit -ne 0 ] ; then
178      jitopt=-s+
179    fi
180    
181    if [ $utf -eq 0 ] ; then
182      if [ $do4 = yes ] ; then
183        echo "Can't run test 4 because UTF support is not configured"
184      exit 1      exit 1
185    fi    fi
186    if [ $do5 = yes ] ; then    if [ $do5 = yes ] ; then
187      echo "Can't run test 5 with an internal link size other than 2"      echo "Can't run test 5 because UTF support is not configured"
188      exit 1      exit 1
189    fi    fi
190    if [ $do6 = yes ] ; then    if [ $do9 = yes ] ; then
191      echo "Can't run test 6 with an internal link size other than 2"      echo "Can't run test 8 because UTF support is not configured"
192        exit 1
193      fi
194      if [ $do15 = yes ] ; then
195        echo "Can't run test 15 because UTF support is not configured"
196      exit 1      exit 1
197    fi    fi
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
204  fi  fi
205    
206  if [ "@UTF8@" = "no" ] ; then  if [ $ucp -eq 0 ] ; then
207    if [ $do4 = yes ] ; then    if [ $do6 = yes ] ; then
208      echo "Can't run test 4 because UTF-8 support is not configured"      echo "Can't run test 6 because Unicode property support is not configured"
209      exit 1      exit 1
210    fi    fi
211    if [ $do5 = yes ] ; then    if [ $do7 = yes ] ; then
212      echo "Can't run test 5 because UTF-8 support is not configured"      echo "Can't run test 7 because Unicode property support is not configured"
213      exit 1      exit 1
214    fi    fi
215    if [ $do6 = yes ] ; then    if [ $do10 = yes ] ; then
216      echo "Can't run test 6 because UTF-8 support is not configured"      echo "Can't run test 10 because Unicode property support is not configured"
217      exit 1      exit 1
218    fi    fi
219    if [ $do8 = yes ] ; then    if [ $do16 = yes ] ; then
220      echo "Can't run test 8 because UTF-8 support is not configured"      echo "Can't run test 16 because Unicode property support is not configured"
221      exit 1      exit 1
222    fi    fi
223    if [ $do9 = yes ] ; then    if [ $do19 = yes ] ; then
224      echo "Can't run test 9 because UTF-8 support is not configured"      echo "Can't run test 19 because Unicode property support is not configured"
225      exit 1      exit 1
226    fi    fi
227  fi  fi
228    
229  if [ "@UCP@" = "no" ] ; then  if [ $link_size -ne 2 ] ; then
230    if [ $do6 = yes ] ; then    if [ $do11 = yes ] ; then
231      echo "Can't run test 6 because Unicode property support is not configured"      echo "Can't run test 11 because the link size ($link_size) is not 2"
232      exit 1      exit 1
233    fi    fi
234    if [ $do9 = yes ] ; then  fi
235      echo "Can't run test 9 because Unicode property support is not configured"  
236    if [ $jit -eq 0 ] ; then
237      if [ $do12 = "yes" ] ; then
238        echo "Can't run test 12 because JIT support is not configured"
239        exit 1
240      fi
241    else
242      if [ $do13 = "yes" ] ; then
243        echo "Can't run test 13 because JIT support is configured"
244      exit 1      exit 1
245    fi    fi
246  fi  fi
247    
248  if [ $do1 = no -a $do2 = no -a $do3 = no -a $do4 = no -a \  # If no specific tests were requested, select all. Those that are not
249       $do5 = no -a $do6 = no -a $do7 = no -a $do8 = no -a \  # relevant will be skipped.
250       $do9 = no ] ; then  
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 \
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
257    do1=yes    do1=yes
258    do2=yes    do2=yes
259    do3=yes    do3=yes
260    if [ "@UTF8@" != "no" ] ; then do4=yes; fi    do4=yes
261    if [ "@UTF8@" != "no" ] ; then do5=yes; fi    do5=yes
262    if [ "@UTF8@" != "no" -a "@UCP@" != "no" ] ; then do6=yes; fi    do6=yes
263    do7=yes    do7=yes
264    if [ "@UTF8@" != "no" ] ; then do8=yes; fi    do8=yes
265    if [ "@UTF8@" != "no" -a "@UCP@" != "no" ] ; then do9=yes; fi    do9=yes
266  fi    do10=yes
267      do11=yes
268  # Show which release    do12=yes
269      do13=yes
270  ./pcretest /dev/null    do14=yes
271      do15=yes
272      do16=yes
273      do17=yes
274      do18=yes
275      do19=yes
276      do20=yes
277      do21=yes
278      do22=yes
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    
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    
295  # Primary test, Perl-compatible  # Primary test, compatible with JIT and all versions of Perl >= 5.8
296    
297  if [ $do1 = yes ] ; then  if [ $do1 = yes ] ; then
298    echo "Test 1: main functionality (Perl compatible)"    echo "Test 1: main functionality (Compatible with Perl >= 5.10)"
299    $valgrind ./pcretest -q $testdata/testinput1 testtry    for opt in "" "-s" $jitopt; do
300    if [ $? = 0 ] ; then      $sim $valgrind ./pcretest -q $bmode $opt $testdata/testinput1 testtry
301      $cf testtry $testdata/testoutput1      if [ $? = 0 ] ; then
302      if [ $? != 0 ] ; then exit 1; fi        $cf $testdata/testoutput1 testtry
303    else exit 1        if [ $? != 0 ] ; then exit 1; fi
304    fi      else exit 1
305    echo "OK"      fi
306    echo " "      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  fi
312    
313  # PCRE tests that are not Perl-compatible - API & error tests, mostly  # PCRE tests that are not JIT or Perl-compatible: API, errors, internals
314    
315  if [ $do2 = yes ] ; then  if [ $do2 = yes ] ; then
316    if [ "@LINK_SIZE@" = "2" ] ; then    echo "Test 2: API, errors, internals, and non-Perl stuff (not UTF-$bits)"
317      echo "Test 2: API and error handling (not Perl compatible)"    for opt in "" "-s" $jitopt; do
318      $valgrind ./pcretest -q $testdata/testinput2 testtry      $sim $valgrind ./pcretest -q $bmode $opt $testdata/testinput2 testtry
319      if [ $? = 0 ] ; then      if [ $? = 0 ] ; then
320        $cf testtry $testdata/testoutput2        $cf $testdata/testoutput2 testtry
321        if [ $? != 0 ] ; then exit 1; fi        if [ $? != 0 ] ; then exit 1; fi
322      else exit 1      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      fi
331      echo "OK"      if [ "$opt" = "-s" ] ; then echo "  OK with study"
332      echo " "      elif [ "$opt" = "-s+" ] ; then echo "  OK with JIT study"
333    else      else echo "  OK"
334      echo Test 2 skipped for link size other than 2 \(@LINK_SIZE@\)      fi
335      echo " "    done
   fi  
336  fi  fi
337    
338  # Locale-specific tests, provided the "fr_FR" locale is available  # 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  if [ $do3 = yes ] ; then
344    locale -a | grep '^fr_FR$' >/dev/null    locale -a | grep '^fr_FR$' >/dev/null
345    if [ $? -eq 0 ] ; then    if [ $? -eq 0 ] ; then
346      echo "Test 3: locale-specific features (using 'fr_FR' locale)"      locale=fr_FR
347      $valgrind ./pcretest -q $testdata/testinput3 testtry      infile=$testdata/testinput3
348      if [ $? = 0 ] ; then      outfile=$testdata/testoutput3
349        $cf testtry $testdata/testoutput3    else
350        if [ $? != 0 ] ; then      infile=test3input
351          echo " "      outfile=test3output
352          echo "Locale test did not run entirely successfully."      locale -a | grep '^french$' >/dev/null
353          echo "This usually means that there is a problem with the locale"      if [ $? -eq 0 ] ; then
354          echo "settings rather than a bug in PCRE."        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        else
364        echo "OK"          locale=
365        fi        fi
       echo " "  
     else exit 1  
366      fi      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
372          $sim $valgrind ./pcretest -q $bmode $opt $infile testtry
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    else
391      echo "Cannot test locale-specific features - 'fr_FR' locale not found,"      echo "Cannot test locale-specific features - none of the 'fr_FR', 'fr' or"
392      echo "or the \"locale\" command is not available to check for it."      echo "'french' locales exist, or the \"locale\" command is not available"
393        echo "to check for them."
394      echo " "      echo " "
395    fi    fi
396  fi  fi
397    
398  # Additional tests for UTF8 support  # Additional tests for UTF support
399    
400  if [ $do4 = yes ] ; then  if [ $do4 = yes ] ; then
401    echo "Test 4: UTF-8 support (Perl compatible)"    echo "Test 4: UTF-$bits support (Compatible with Perl >= 5.10)"
402    $valgrind ./pcretest -q $testdata/testinput4 testtry    if [ $utf -eq 0 ] ; then
403    if [ $? = 0 ] ; then      echo "  Skipped because UTF-$bits support is not available"
404      $cf testtry $testdata/testoutput4    else
405      if [ $? != 0 ] ; then exit 1; fi      for opt in "" "-s" $jitopt; do
406    else exit 1        $sim $valgrind ./pcretest -q $bmode $opt $testdata/testinput4 testtry
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    fi
   echo "OK"  
   echo " "  
418  fi  fi
419    
420  if [ $do5 = yes ] ; then  if [ $do5 = yes ] ; then
421    if [ "@LINK_SIZE@" = "2" ] ; then    echo "Test 5: API, internals, and non-Perl stuff for UTF-$bits support"
422      echo "Test 5: API and internals for UTF-8 support (not Perl compatible)"    if [ $utf -eq 0 ] ; then
423      $valgrind ./pcretest -q $testdata/testinput5 testtry      echo "  Skipped because UTF-$bits support is not available"
424      else
425        for opt in "" "-s" $jitopt; do
426          $sim $valgrind ./pcretest -q $bmode $opt $testdata/testinput5 testtry
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)"
442      if [ $utf -eq 0 -o $ucp -eq 0 ] ; then
443        echo "  Skipped because Unicode property support is not available"
444      else
445        for opt in "" "-s" $jitopt; do
446          $sim $valgrind ./pcretest -q $bmode $opt $testdata/testinput6 testtry
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    
460    # Test non-Perl-compatible Unicode property support
461    
462    if [ $do7 = yes ] ; then
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"
486      for opt in "" "-s"; do
487        $sim $valgrind ./pcretest -q $bmode $opt -dfa $testdata/testinput8 testtry
488      if [ $? = 0 ] ; then      if [ $? = 0 ] ; then
489        $cf testtry $testdata/testoutput5        $cf $testdata/testoutput8 testtry
490        if [ $? != 0 ] ; then exit 1; fi        if [ $? != 0 ] ; then exit 1; fi
491      else exit 1      else exit 1
492      fi      fi
493      echo "OK"      if [ "$opt" = "-s" ] ; then echo "  OK with study" ; else echo "  OK"; fi
494      echo " "    done
495    fi
496    
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"
501    else    else
502      echo Test 5 skipped for link size other than 2 \(@LINK_SIZE@\)      for opt in "" "-s"; do
503      echo " "        $sim $valgrind ./pcretest -q $bmode $opt -dfa $testdata/testinput9 testtry
504          if [ $? = 0 ] ; then
505            $cf $testdata/testoutput9 testtry
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    fi
512  fi  fi
513    
514  if [ $do6 = yes ] ; then  if [ $do10 = yes ] ; then
515    if [ "@LINK_SIZE@" = "2" ] ; then    echo "Test 10: DFA matching with Unicode properties"
516      echo "Test 6: Unicode property support"    if [ $utf -eq 0 -o $ucp -eq 0 ] ; then
517      $valgrind ./pcretest -q $testdata/testinput6 testtry      echo "  Skipped because Unicode property support is not available"
518      else
519        for opt in "" "-s"; do
520          $sim $valgrind ./pcretest -q $bmode $opt -dfa $testdata/testinput10 testtry
521          if [ $? = 0 ] ; then
522            $cf $testdata/testoutput10 testtry
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
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.
537    
538    if [ $do11 = yes ] ; then
539      echo "Test 11: Internal offsets and code size tests"
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
546          $sim $valgrind ./pcretest -q $bmode $opt $testdata/testinput11 testtry
547          if [ $? = 0 ] ; then
548            $cf $testdata/testoutput11-$bits testtry
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    
557    # Test JIT-specific features when JIT is available
558    
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
565      if [ $? = 0 ] ; then      if [ $? = 0 ] ; then
566        $cf testtry $testdata/testoutput6        $cf $testdata/testoutput12 testtry
567        if [ $? != 0 ] ; then exit 1; fi        if [ $? != 0 ] ; then exit 1; fi
568      else exit 1      else exit 1
569      fi      fi
570      echo "OK"      echo "  OK"
571      echo " "    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    else
581      echo Test 6 skipped for link size other than 2 \(@LINK_SIZE@\)      $sim $valgrind ./pcretest -q $bmode $testdata/testinput13 testtry
582      echo " "      if [ $? = 0 ] ; then
583          $cf $testdata/testoutput13 testtry
584          if [ $? != 0 ] ; then exit 1; fi
585        else exit 1
586        fi
587        echo "  OK"
588    fi    fi
589  fi  fi
590    
591  # Tests for DFA matching support  # Tests for 8-bit-specific features
592    
593  if [ $do7 = yes ] ; then  if [ "$do14" = yes ] ; then
594    echo "Test 7: DFA matching"    echo "Test 14: specials for the basic 8-bit library"
595    $valgrind ./pcretest -q -dfa $testdata/testinput7 testtry    if [ "$bits" = "16" ] ; then
596    if [ $? = 0 ] ; then      echo "  Skipped when running 16-bit tests"
597      $cf testtry $testdata/testoutput7    else
598      if [ $? != 0 ] ; then exit 1; fi      cp -f $testdata/saved16 testsaved16
599    else exit 1      for opt in "" "-s" $jitopt; do
600          $sim $valgrind ./pcretest -q $bmode $opt $testdata/testinput14 testtry
601          if [ $? = 0 ] ; then
602            $cf $testdata/testoutput14 testtry
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    fi
   echo "OK"  
   echo " "  
612  fi  fi
613    
614  if [ $do8 = yes ] ; then  # Tests for 8-bit-specific features (needs UTF-8 support)
615    echo "Test 8: DFA matching with UTF-8"  
616    $valgrind ./pcretest -q -dfa $testdata/testinput8 testtry  if [ "$do15" = yes ] ; then
617    if [ $? = 0 ] ; then    echo "Test 15: specials for the 8-bit library with UTF-8 support"
618      $cf testtry $testdata/testoutput8    if [ "$bits" = "16" ] ; then
619      if [ $? != 0 ] ; then exit 1; fi      echo "  Skipped when running 16-bit tests"
620    else exit 1    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    fi
   echo "OK"  
   echo " "  
636  fi  fi
637    
638  if [ $do9 = yes ] ; then  # Tests for 8-bit-specific features (Unicode property support)
639    echo "Test 9: DFA matching with Unicode properties"  
640    $valgrind ./pcretest -q -dfa $testdata/testinput9 testtry  if [ $do16 = yes ] ; then
641    if [ $? = 0 ] ; then    echo "Test 16: specials for the 8-bit library with Unicode propery support"
642      $cf testtry $testdata/testoutput9    if [ "$bits" = "16" ] ; then
643      if [ $? != 0 ] ; then exit 1; fi      echo "  Skipped when running 16-bit tests"
644    else exit 1    elif [ $ucp -eq 0 ] ; then
645        echo "  Skipped because Unicode property support is not available"
646      else
647        for opt in "" "-s" $jitopt; do
648          $sim $valgrind ./pcretest -q $bmode $opt $testdata/testinput16 testtry
649          if [ $? = 0 ] ; then
650            $cf $testdata/testoutput16 testtry
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    fi
   echo "OK"  
   echo " "  
660  fi  fi
661    
662    # Tests for 16-bit-specific features
663    
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"
692      else
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
766        if [ $? = 0 ] ; then
767          $cf $testdata/testoutput21 testtry
768          if [ $? != 0 ] ; then exit 1; fi
769        else exit 1
770        fi
771        echo "  OK"
772      fi
773    fi
774    
775    # Tests for reloads with 16-bit library (UTF-16 support)
776    
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"
785      else
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
789        if [ $? = 0 ] ; then
790          $cf $testdata/testoutput22 testtry
791          if [ $? != 0 ] ; then exit 1; fi
792        else exit 1
793        fi
794        echo "  OK"
795      fi
796    fi
797    
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    
804  # End  # End

Legend:
Removed from v.97  
changed lines
  Added in v.903

  ViewVC Help
Powered by ViewVC 1.1.5