/[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 63 by nigel, Sat Feb 24 21:40:03 2007 UTC code/trunk/RunTest revision 612 by ph10, Sat Jul 2 15:20:59 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    
13    valgrind=
14    
15    # 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
26    
27    # Find which optional facilities are available
28    
29    case `./pcretest -C | ./pcregrep 'Internal link size'` in
30      *2) link_size=2;;
31      *3) link_size=3;;
32      *4) link_size=4;;
33       *) echo "Failed to find internal link size"; exit 1;;
34    esac
35    
36  # Run PCRE tests  ./pcretest -C | ./pcregrep 'No UTF-8 support' >/dev/null
37    utf8=$?
38    
39  cf=diff  ./pcretest -C | ./pcregrep 'No Unicode properties support' >/dev/null
40  testdata=@top_srcdir@/testdata  ucp=$?
41    
42  # Select which tests to run; if no selection, run all  # Select which tests to run; for those that are explicitly requested, check
43    # that the necessary optional facilities are available.
44    
45  do1=no  do1=no
46  do2=no  do2=no
47  do3=no  do3=no
48  do4=no  do4=no
49  do5=no  do5=no
50    do6=no
51    do7=no
52    do8=no
53    do9=no
54    do10=no
55    do11=no
56    do12=no
57    
58  while [ $# -gt 0 ] ; do  while [ $# -gt 0 ] ; do
59    case $1 in    case $1 in
# Line 22  while [ $# -gt 0 ] ; do Line 61  while [ $# -gt 0 ] ; do
61      2) do2=yes;;      2) do2=yes;;
62      3) do3=yes;;      3) do3=yes;;
63      4) do4=yes;;      4) do4=yes;;
64      5) do5=yes;;      5) do5=yes;;
65        6) do6=yes;;
66        7) do7=yes;;
67        8) do8=yes;;
68        9) do9=yes;;
69       10) do10=yes;;
70       11) do11=yes;;
71       12) do12=yes;;
72       valgrind) valgrind="valgrind -q";;
73      *) echo "Unknown test number $1"; exit 1;;      *) echo "Unknown test number $1"; exit 1;;
74    esac    esac
75    shift    shift
76  done  done
77    
78  if [ "@UTF8@" = "" ] ; then  if [ $utf8 -eq 0 ] ; then
79    if [ $do4 = yes ] ; then    if [ $do4 = yes ] ; then
80      echo "Can't run test 4 because UFT8 support is not configured"      echo "Can't run test 4 because UTF-8 support is not configured"
81      exit 1      exit 1
82    fi    fi
83    if [ $do5 = yes ] ; then    if [ $do5 = yes ] ; then
84      echo "Can't run test 5 because UFT8 support is not configured"      echo "Can't run test 5 because UTF-8 support is not configured"
85        exit 1
86      fi
87      if [ $do8 = yes ] ; then
88        echo "Can't run test 8 because UTF-8 support is not configured"
89        exit 1
90      fi
91    fi
92    
93    if [ $ucp -eq 0 ] ; then
94      if [ $do6 = yes ] ; then
95        echo "Can't run test 6 because Unicode property support is not configured"
96        exit 1
97      fi
98      if [ $do9 = yes ] ; then
99        echo "Can't run test 9 because Unicode property support is not configured"
100        exit 1
101      fi
102      if [ $do10 = yes ] ; then
103        echo "Can't run test 10 because Unicode property support is not configured"
104      exit 1      exit 1
105    fi    fi
106  fi    if [ $do12 = yes ] ; then
107        echo "Can't run test 12 because Unicode property support is not configured"
108        exit 1
109      fi
110    fi
111    
112    if [ $link_size -ne 2 ] ; then
113      if [ $do10 = yes ] ; then
114        echo "Can't run test 10 because the link size ($link_size) is not 2"
115        exit 1
116      fi
117    fi
118    
119  if [ $do1 = no -a $do2 = no -a $do3 = no -a $do4 = no -a\  # If no specific tests were requested, select all that are relevant.
120       $do5 = no ] ; then  
121    if [ $do1 = no -a $do2 = no -a $do3 = no -a $do4 = no -a \
122         $do5 = no -a $do6 = no -a $do7 = no -a $do8 = no -a \
123         $do9 = no -a $do10 = no -a $do11 = no -a $do12 = no ] ; then
124    do1=yes    do1=yes
125    do2=yes    do2=yes
126    do3=yes    do3=yes
127    if [ "@UTF8@" != "" ] ; then do4=yes; fi    if [ $utf8 -ne 0 ] ; then do4=yes; fi
128    if [ "@UTF8@" != "" ] ; then do5=yes; fi    if [ $utf8 -ne 0 ] ; then do5=yes; fi
129      if [ $utf8 -ne 0 -a $ucp -ne 0 ] ; then do6=yes; fi
130      do7=yes
131      if [ $utf8 -ne 0 ] ; then do8=yes; fi
132      if [ $utf8 -ne 0 -a $ucp -ne 0 ] ; then do9=yes; fi
133      if [ $link_size -eq 2 -a $ucp -ne 0 ] ; then do10=yes; fi
134      do11=yes
135      if [ $utf8 -ne 0 -a $ucp -ne 0 ] ; then do12=yes; fi
136  fi  fi
137    
138  # Primary test, Perl-compatible  # Show which release
139    
140    echo ""
141    echo PCRE C library tests
142    ./pcretest /dev/null
143    
144    # Primary test, compatible with all versions of Perl >= 5.8
145    
146  if [ $do1 = yes ] ; then  if [ $do1 = yes ] ; then
147    echo "Testing main functionality (Perl compatible)"    echo "Test 1: main functionality (Compatible with Perl >= 5.8)"
148    ./pcretest $testdata/testinput1 testtry    for opt in "" "-s"; do
149    if [ $? = 0 ] ; then      $valgrind ./pcretest -q $opt $testdata/testinput1 testtry
150      $cf testtry $testdata/testoutput1      if [ $? = 0 ] ; then
151      if [ $? != 0 ] ; then exit 1; fi        $cf $testdata/testoutput1 testtry
152      echo " "        if [ $? != 0 ] ; then exit 1; fi
153    else exit 1      else exit 1
154    fi      fi
155        if [ "$opt" = "-s" ] ; then echo "OK with study" ; else echo "OK"; fi
156      done
157  fi  fi
158    
159  # PCRE tests that are not Perl-compatible - API & error tests, mostly  # PCRE tests that are not Perl-compatible - API, errors, internals
160    
161  if [ $do2 = yes ] ; then  if [ $do2 = yes ] ; then
162    echo "Testing API and error handling (not Perl compatible)"    echo "Test 2: API, errors, internals, and non-Perl stuff"
163    ./pcretest -i $testdata/testinput2 testtry    for opt in "" "-s"; do
164    if [ $? = 0 ] ; then      $valgrind ./pcretest -q $opt $testdata/testinput2 testtry
165      $cf testtry $testdata/testoutput2      if [ $? = 0 ] ; then
166      if [ $? != 0 ] ; then exit 1; fi        $cf $testdata/testoutput2 testtry
167    else exit 1        if [ $? != 0 ] ; then exit 1; fi
168    fi      else
169  fi        echo " "
170          echo "** Test 2 requires a lot of stack. If it has crashed with a"
171  if [ $do1 = yes -a $do2 = yes ] ; then        echo "** segmentation fault, it may be that you do not have enough"
172    echo " "        echo "** stack available by default. Please see the 'pcrestack' man"
173    echo "The two main tests ran OK"        echo "** page for a discussion of PCRE's stack usage."
174    echo " "        echo " "
175          exit 1
176        fi
177        if [ "$opt" = "-s" ] ; then echo "OK with study" ; else echo "OK"; fi
178      done
179  fi  fi
180    
181  # Locale-specific tests, provided the "fr" locale is available  # Locale-specific tests, provided that either the "fr_FR" or the "french"
182    # locale is available. The former is the Unix-like standard; the latter is
183    # for Windows.
184    
185  if [ $do3 = yes ] ; then  if [ $do3 = yes ] ; then
186    locale -a | grep '^fr$' >/dev/null    locale -a | grep '^fr_FR$' >/dev/null
187    if [ $? -eq 0 ] ; then    if [ $? -eq 0 ] ; then
188      echo "Testing locale-specific features (using 'fr' locale)"      locale=fr_FR
189      ./pcretest $testdata/testinput3 testtry      infile=$testdata/testinput3
190      if [ $? = 0 ] ; then      outfile=$testdata/testoutput3
191        $cf testtry $testdata/testoutput3    else
192        if [ $? != 0 ] ; then      locale -a | grep '^french$' >/dev/null
193          echo " "      if [ $? -eq 0 ] ; then
194          echo "Locale test did not run entirely successfully."        locale=french
195          echo "This usually means that there is a problem with the locale"        sed 's/fr_FR/french/' $testdata/testinput3 >test3input
196          echo "settings rather than a bug in PCRE."        sed 's/fr_FR/french/' $testdata/testoutput3 >test3output
197        else        infile=test3input
198        echo "Locale test ran OK"        outfile=test3output
199        fi      else
200        echo " "        locale=
     else exit 1  
201      fi      fi
202      fi
203    
204      if [ "$locale" != "" ] ; then
205        echo "Test 3: locale-specific features (using '$locale' locale)"
206        for opt in "" "-s"; do
207          $valgrind ./pcretest -q $opt $infile testtry
208          if [ $? = 0 ] ; then
209            $cf $outfile testtry
210            if [ $? != 0 ] ; then
211              echo " "
212              echo "Locale test did not run entirely successfully."
213              echo "This usually means that there is a problem with the locale"
214              echo "settings rather than a bug in PCRE."
215              break;
216            else
217              if [ "$opt" = "-s" ] ; then echo "OK with study" ; else echo "OK"; fi
218            fi
219          else exit 1
220          fi
221        done
222    else    else
223      echo "Cannot test locale-specific features - 'fr' locale not found,"      echo "Cannot test locale-specific features - neither the 'fr_FR' nor the"
224      echo "or the \"locale\" command is not available to check for it."      echo "'french' locale exists, or the \"locale\" command is not available"
225      echo " "      echo "to check for them."
226        echo " "
227    fi    fi
228  fi  fi
229    
230  # Additional tests for UTF8 support  # Additional tests for UTF8 support
231    
232  if [ $do4 = yes ] ; then  if [ $do4 = yes ] ; then
233    echo "Testing UTF-8 support (Perl compatible)"    echo "Test 4: UTF-8 support (Compatible with Perl >= 5.8)"
234    ./pcretest $testdata/testinput4 testtry    for opt in "" "-s"; do
235    if [ $? = 0 ] ; then      $valgrind ./pcretest -q $opt $testdata/testinput4 testtry
236      $cf testtry $testdata/testoutput4      if [ $? = 0 ] ; then
237      if [ $? != 0 ] ; then exit 1; fi        $cf $testdata/testoutput4 testtry
238    else exit 1        if [ $? != 0 ] ; then exit 1; fi
239    fi      else exit 1
240    echo "UTF8 test ran OK"      fi
241    echo " "      if [ "$opt" = "-s" ] ; then echo "OK with study" ; else echo "OK"; fi
242      done
243  fi  fi
244    
245  if [ $do5 = yes ] ; then  if [ $do5 = yes ] ; then
246    echo "Testing API and internals for UTF-8 support (not Perl compatible)"    echo "Test 5: API, internals, and non-Perl stuff for UTF-8 support"
247    ./pcretest $testdata/testinput5 testtry    for opt in "" "-s"; do
248    if [ $? = 0 ] ; then      $valgrind ./pcretest -q $opt $testdata/testinput5 testtry
249      $cf testtry $testdata/testoutput5      if [ $? = 0 ] ; then
250      if [ $? != 0 ] ; then exit 1; fi        $cf $testdata/testoutput5 testtry
251    else exit 1        if [ $? != 0 ] ; then exit 1; fi
252    fi      else exit 1
253    echo "UTF8 internals test ran OK"      fi
254    echo " "      if [ "$opt" = "-s" ] ; then echo "OK with study" ; else echo "OK"; fi
255      done
256    fi
257    
258    if [ $do6 = yes ] ; then
259      echo "Test 6: Unicode property support (Compatible with Perl >= 5.10)"
260      for opt in "" "-s"; do
261        $valgrind ./pcretest -q $opt $testdata/testinput6 testtry
262        if [ $? = 0 ] ; then
263          $cf $testdata/testoutput6 testtry
264          if [ $? != 0 ] ; then exit 1; fi
265        else exit 1
266        fi
267        if [ "$opt" = "-s" ] ; then echo "OK with study" ; else echo "OK"; fi
268      done
269    fi
270    
271    # Tests for DFA matching support
272    
273    if [ $do7 = yes ] ; then
274      echo "Test 7: DFA matching"
275      for opt in "" "-s"; do
276        $valgrind ./pcretest -q $opt -dfa $testdata/testinput7 testtry
277        if [ $? = 0 ] ; then
278          $cf $testdata/testoutput7 testtry
279          if [ $? != 0 ] ; then exit 1; fi
280        else exit 1
281        fi
282        if [ "$opt" = "-s" ] ; then echo "OK with study" ; else echo "OK"; fi
283      done
284    fi
285    
286    if [ $do8 = yes ] ; then
287      echo "Test 8: DFA matching with UTF-8"
288      for opt in "" "-s"; do
289        $valgrind ./pcretest -q $opt -dfa $testdata/testinput8 testtry
290        if [ $? = 0 ] ; then
291          $cf $testdata/testoutput8 testtry
292          if [ $? != 0 ] ; then exit 1; fi
293        else exit 1
294        fi
295        if [ "$opt" = "-s" ] ; then echo "OK with study" ; else echo "OK"; fi
296      done
297    fi
298    
299    if [ $do9 = yes ] ; then
300      echo "Test 9: DFA matching with Unicode properties"
301      for opt in "" "-s"; do
302        $valgrind ./pcretest -q $opt -dfa $testdata/testinput9 testtry
303        if [ $? = 0 ] ; then
304          $cf $testdata/testoutput9 testtry
305          if [ $? != 0 ] ; then exit 1; fi
306        else exit 1
307        fi
308        if [ "$opt" = "-s" ] ; then echo "OK with study" ; else echo "OK"; fi
309      done
310    fi
311    
312    # Test of internal offsets and code sizes. This test is run only when there
313    # is Unicode property support and the link size is 2. The actual tests are
314    # mostly the same as in some of the above, but in this test we inspect some
315    # offsets and sizes that require a known link size. This is a doublecheck for
316    # the maintainer, just in case something changes unexpectely.
317    
318    if [ $do10 = yes ] ; then
319      echo "Test 10: Internal offsets and code size tests"
320      for opt in "" "-s"; do
321        $valgrind ./pcretest -q $opt $testdata/testinput10 testtry
322        if [ $? = 0 ] ; then
323          $cf $testdata/testoutput10 testtry
324          if [ $? != 0 ] ; then exit 1; fi
325        else exit 1
326        fi
327        if [ "$opt" = "-s" ] ; then echo "OK with study" ; else echo "OK"; fi
328      done
329    fi
330    
331    # Test of Perl >= 5.10 features
332    
333    if [ $do11 = yes ] ; then
334      echo "Test 11: Features from Perl >= 5.10"
335      for opt in "" "-s"; do
336        $valgrind ./pcretest -q $opt $testdata/testinput11 testtry
337        if [ $? = 0 ] ; then
338          $cf $testdata/testoutput11 testtry
339          if [ $? != 0 ] ; then exit 1; fi
340        else exit 1
341        fi
342        if [ "$opt" = "-s" ] ; then echo "OK with study" ; else echo "OK"; fi
343      done
344    fi
345    
346    # Test non-Perl-compatible Unicode property support
347    
348    if [ $do12 = yes ] ; then
349      echo "Test 12: API, internals, and non-Perl stuff for Unicode property support"
350      for opt in "" "-s"; do
351        $valgrind ./pcretest -q $opt $testdata/testinput12 testtry
352        if [ $? = 0 ] ; then
353          $cf $testdata/testoutput12 testtry
354          if [ $? != 0 ] ; then exit 1; fi
355        else exit 1
356        fi
357        if [ "$opt" = "-s" ] ; then echo "OK with study" ; else echo "OK"; fi
358      done
359  fi  fi
360    
361  # End  # End

Legend:
Removed from v.63  
changed lines
  Added in v.612

webmaster@exim.org
ViewVC Help
Powered by ViewVC 1.1.12