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

Legend:
Removed from v.116  
changed lines
  Added in v.654

  ViewVC Help
Powered by ViewVC 1.1.5