NCBI C++ Toolkit Cross Reference

C++/src/util/regexp/RunTest


  1 #! /bin/sh
  2 
  3 # Run PCRE tests.
  4 
  5 valgrind=
  6 
  7 # Set up a suitable "diff" command for comparison. Some systems
  8 # have a diff that lacks a -u option. Try to deal with this.
  9 
 10 if diff -u /dev/null /dev/null; then cf="diff -u"; else cf="diff"; fi
 11 
 12 # Find the test data
 13 
 14 testdata=testdata
 15 if [ -n "$srcdir" -a -d "$srcdir" ] ; then
 16   testdata="$srcdir/testdata"
 17 fi
 18 
 19 # Find which optional facilities are available
 20 
 21 case `./pcretest -C | ./pcregrep 'Internal link size'` in
 22   *2) link_size=2;;
 23   *3) link_size=3;;
 24   *4) link_size=4;;
 25    *) echo "Failed to find internal link size"; exit 1;;
 26 esac
 27 
 28 ./pcretest -C | ./pcregrep 'No UTF-8 support' >/dev/null
 29 utf8=$?
 30 
 31 ./pcretest -C | ./pcregrep 'No Unicode properties support' >/dev/null
 32 ucp=$?
 33 
 34 # Select which tests to run; for those that are explicitly requested, check
 35 # that the necessary optional facilities are available.
 36 
 37 do1=no
 38 do2=no
 39 do3=no
 40 do4=no
 41 do5=no
 42 do6=no
 43 do7=no
 44 do8=no
 45 do9=no
 46 do10=no
 47 
 48 while [ $# -gt 0 ] ; do
 49   case $1 in
 50     1) do1=yes;;
 51     2) do2=yes;;
 52     3) do3=yes;;
 53     4) do4=yes;;
 54     5) do5=yes;;
 55     6) do6=yes;;
 56     7) do7=yes;;
 57     8) do8=yes;;
 58     9) do9=yes;;
 59    10) do10=yes;;
 60    valgrind) valgrind="valgrind -q";;
 61     *) echo "Unknown test number $1"; exit 1;;
 62   esac
 63   shift
 64 done
 65 
 66 if [ $utf8 -eq 0 ] ; then
 67   if [ $do4 = yes ] ; then
 68     echo "Can't run test 4 because UTF-8 support is not configured"
 69     exit 1
 70   fi
 71   if [ $do5 = yes ] ; then
 72     echo "Can't run test 5 because UTF-8 support is not configured"
 73     exit 1
 74   fi
 75   if [ $do8 = yes ] ; then
 76     echo "Can't run test 8 because UTF-8 support is not configured"
 77     exit 1
 78   fi
 79 fi
 80 
 81 if [ $ucp -eq 0 ] ; then
 82   if [ $do6 = yes ] ; then
 83     echo "Can't run test 6 because Unicode property support is not configured"
 84     exit 1
 85   fi
 86   if [ $do9 = yes ] ; then
 87     echo "Can't run test 9 because Unicode property support is not configured"
 88     exit 1
 89   fi
 90   if [ $do10 = yes ] ; then
 91     echo "Can't run test 10 because Unicode property support is not configured"
 92     exit 1
 93   fi
 94 fi
 95 
 96 if [ $link_size -ne 2 ] ; then
 97   if [ $do10 = yes ] ; then
 98     echo "Can't run test 10 because the link size ($link_size) is not 2"
 99     exit 1
100   fi
101 fi
102 
103 # If no specific tests were requested, select all that are relevant.
104 
105 if [ $do1 = no -a $do2 = no -a $do3 = no -a $do4 = no -a \
106      $do5 = no -a $do6 = no -a $do7 = no -a $do8 = no -a \
107      $do9 = no -a $do10 = no ] ; then
108   do1=yes
109   do2=yes
110   do3=yes
111   if [ $utf8 -ne 0 ] ; then do4=yes; fi
112   if [ $utf8 -ne 0 ] ; then do5=yes; fi
113   if [ $utf8 -ne 0 -a $ucp -ne 0 ] ; then do6=yes; fi
114   do7=yes
115   if [ $utf8 -ne 0 ] ; then do8=yes; fi
116   if [ $utf8 -ne 0 -a $ucp -ne 0 ] ; then do9=yes; fi
117   if [ $link_size -eq 2 -a $ucp -ne 0 ] ; then do10=yes; fi
118 fi
119 
120 # Show which release
121 
122 echo ""
123 echo PCRE C library tests
124 ./pcretest /dev/null
125 
126 # Primary test, Perl-compatible
127 
128 if [ $do1 = yes ] ; then
129   echo "Test 1: main functionality (Perl compatible)"
130   $valgrind ./pcretest -q $testdata/testinput1 testtry
131   if [ $? = 0 ] ; then
132     $cf $testdata/testoutput1 testtry
133     if [ $? != 0 ] ; then exit 1; fi
134   else exit 1
135   fi
136   echo "OK"
137 fi
138 
139 # PCRE tests that are not Perl-compatible - API & error tests, mostly
140 
141 if [ $do2 = yes ] ; then
142   echo "Test 2: API and error handling (not Perl compatible)"
143   $valgrind ./pcretest -q $testdata/testinput2 testtry
144   if [ $? = 0 ] ; then
145     $cf $testdata/testoutput2 testtry
146     if [ $? != 0 ] ; then exit 1; fi
147   else
148     echo " "
149     echo "** Test 2 requires a lot of stack. If it has crashed with a"
150     echo "** segmentation fault, it may be that you do not have enough"
151     echo "** stack available by default. Please see the 'pcrestack' man"
152     echo "** page for a discussion of PCRE's stack usage."
153     echo " "
154     exit 1
155   fi
156   echo "OK"
157 fi
158 
159 # Locale-specific tests, provided that either the "fr_FR" or the "french"
160 # locale is available. The former is the Unix-like standard; the latter is
161 # for Windows.
162 
163 if [ $do3 = yes ] ; then
164   locale -a | grep '^fr_FR$' >/dev/null
165   if [ $? -eq 0 ] ; then
166     locale=fr_FR
167     infile=$testdata/testinput3
168     outfile=$testdata/testoutput3
169   else
170     locale -a | grep '^french$' >/dev/null
171     if [ $? -eq 0 ] ; then
172       locale=french
173       sed 's/fr_FR/french/' $testdata/testinput3 >test3input
174       sed 's/fr_FR/french/' $testdata/testoutput3 >test3output
175       infile=test3input
176       outfile=test3output
177     else
178       locale=
179     fi
180   fi
181 
182   if [ "$locale" != "" ] ; then
183     echo "Test 3: locale-specific features (using '$locale' locale)"
184     $valgrind ./pcretest -q $infile testtry
185     if [ $? = 0 ] ; then
186       $cf $outfile testtry
187       if [ $? != 0 ] ; then
188         echo " "
189         echo "Locale test did not run entirely successfully."
190         echo "This usually means that there is a problem with the locale"
191         echo "settings rather than a bug in PCRE."
192       else
193       echo "OK"
194       fi
195     else exit 1
196     fi
197   else
198     echo "Cannot test locale-specific features - neither the 'fr_FR' nor the"
199     echo "'french' locale exists, or the \"locale\" command is not available"
200     echo "to check for them."
201     echo " "
202   fi
203 fi
204 
205 # Additional tests for UTF8 support
206 
207 if [ $do4 = yes ] ; then
208   echo "Test 4: UTF-8 support (Perl compatible)"
209   $valgrind ./pcretest -q $testdata/testinput4 testtry
210   if [ $? = 0 ] ; then
211     $cf $testdata/testoutput4 testtry
212     if [ $? != 0 ] ; then exit 1; fi
213   else exit 1
214   fi
215   echo "OK"
216 fi
217 
218 if [ $do5 = yes ] ; then
219   echo "Test 5: API and internals for UTF-8 support (not Perl compatible)"
220   $valgrind ./pcretest -q $testdata/testinput5 testtry
221   if [ $? = 0 ] ; then
222     $cf $testdata/testoutput5 testtry
223     if [ $? != 0 ] ; then exit 1; fi
224   else exit 1
225   fi
226   echo "OK"
227 fi
228 
229 if [ $do6 = yes ] ; then
230   echo "Test 6: Unicode property support"
231   $valgrind ./pcretest -q $testdata/testinput6 testtry
232   if [ $? = 0 ] ; then
233     $cf $testdata/testoutput6 testtry
234     if [ $? != 0 ] ; then exit 1; fi
235   else exit 1
236   fi
237   echo "OK"
238 fi
239 
240 # Tests for DFA matching support
241 
242 if [ $do7 = yes ] ; then
243   echo "Test 7: DFA matching"
244   $valgrind ./pcretest -q -dfa $testdata/testinput7 testtry
245   if [ $? = 0 ] ; then
246     $cf $testdata/testoutput7 testtry
247     if [ $? != 0 ] ; then exit 1; fi
248   else exit 1
249   fi
250   echo "OK"
251 fi
252 
253 if [ $do8 = yes ] ; then
254   echo "Test 8: DFA matching with UTF-8"
255   $valgrind ./pcretest -q -dfa $testdata/testinput8 testtry
256   if [ $? = 0 ] ; then
257     $cf $testdata/testoutput8 testtry
258     if [ $? != 0 ] ; then exit 1; fi
259   else exit 1
260   fi
261   echo "OK"
262 fi
263 
264 if [ $do9 = yes ] ; then
265   echo "Test 9: DFA matching with Unicode properties"
266   $valgrind ./pcretest -q -dfa $testdata/testinput9 testtry
267   if [ $? = 0 ] ; then
268     $cf $testdata/testoutput9 testtry
269     if [ $? != 0 ] ; then exit 1; fi
270   else exit 1
271   fi
272   echo "OK"
273 fi
274 
275 # Test of internal offsets and code sizes. This test is run only when there
276 # is Unicode property support and the link size is 2. The actual tests are
277 # mostly the same as in some of the above, but in this test we inspect some
278 # offsets and sizes that require a known link size. This is a doublecheck for
279 # the maintainer, just in case something changes unexpectely.
280 
281 if [ $do10 = yes ] ; then
282   echo "Test 10: Internal offsets and code size tests"
283   $valgrind ./pcretest -q $testdata/testinput10 testtry
284   if [ $? = 0 ] ; then
285     $cf $testdata/testoutput10 testtry
286     if [ $? != 0 ] ; then exit 1; fi
287   else exit 1
288   fi
289   echo "OK"
290 fi
291 
292 # End

source navigation ]   [ diff markup ]   [ identifier search ]   [ freetext search ]   [ file search ]  

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.