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

Diff of /code/trunk/RunTest.bat

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

revision 622 by ph10, Mon Jul 18 10:46:51 2011 UTC revision 1053 by zherczeg, Tue Oct 9 15:43:08 2012 UTC
# Line 1  Line 1 
1  @echo off  @echo off
2  @rem  This file was contributed by Ralf Junker, and touched up by  @rem This file must use CRLF linebreaks to function properly
3  @rem  Daniel Richard G. Tests 10-12 added by Philip H.  @rem and requires both pcretest and pcregrep
4  @rem  Philip H also changed test 3 to use "wintest" files.  @rem  This file was originally contributed by Ralf Junker, and touched up by
5  @rem  @rem  Daniel Richard G. Tests 10-12 added by Philip H.
6  @rem  Updated by Tom Fortmann to support explicit test numbers on the command line.  @rem  Philip H also changed test 3 to use "wintest" files.
7  @rem  Added argument validation and added error reporting.  @rem
8  @rem  @rem  Updated by Tom Fortmann to support explicit test numbers on the command line.
9  @rem  MS Windows batch file to run pcretest on testfiles with the correct  @rem  Added argument validation and added error reporting.
10  @rem  options.  @rem
11  @rem  @rem  MS Windows batch file to run pcretest on testfiles with the correct
12  @rem  Output is written to a newly created subfolder named testout.  @rem  options.
13  @rem  @rem
14    @rem Sheri Pierce added logic to skip feature dependent tests
15  setlocal  @rem tests 4 5 9 15 and 18 require utf support
16    @rem tests 6 7 10 16 and 19 require ucp support
17  if [%srcdir%]==[]   set srcdir=.  @rem 11 requires ucp and link size 2
18  if [%pcretest%]==[] set pcretest=pcretest  @rem 12 requires presense of jit support
19    @rem 13 requires absence of jit support
20  if not exist testout md testout  @rem Sheri P also added override tests for study and jit testing
21    @rem Zoltan Herczeg added libpcre16 support
22  set do1=no  
23  set do2=no  setlocal enabledelayedexpansion
24  set do3=no  if [%srcdir%]==[] (
25  set do4=no  if exist testdata\ set srcdir=.)
26  set do5=no  if [%srcdir%]==[] (
27  set do6=no  if exist ..\testdata\ set srcdir=..)
28  set do7=no  if [%srcdir%]==[] (
29  set do8=no  if exist ..\..\testdata\ set srcdir=..\..)
30  set do9=no  if NOT exist %srcdir%\testdata\ (
31  set do10=no  Error: echo distribution testdata folder not found!
32  set do11=no  call :conferror
33  set do12=no  exit /b 1
34  set all=yes  goto :eof
35    )
36  setlocal enabledelayedexpansion  
37  for %%a in (%*) do (  if [%pcretest%]==[] set pcretest=.\pcretest.exe
38    set valid=no  
39    for %%v in (1 2 3 4 5 6 7 8 9 10 11 12) do if %%v == %%a set valid=yes  echo source dir is %srcdir%
40    if "!valid!" == "yes" (  echo pcretest=%pcretest%
41      set do%%a=yes  
42      set all=no  if NOT exist %pcretest% (
43    ) else (  echo Error: %pcretest% not found!
44      echo Invalid test number - %%a!  echo.
45          echo Usage: %0 [ test_number ] ...  call :conferror
46          echo Where test_number is one or more optional test numbers 1 through 12, default is all tests.  exit /b 1
47          exit /b 1  )
48    )  
49  )  %pcretest% -C linksize >NUL
50    set link_size=%ERRORLEVEL%
51  if "%all%" == "yes" (  %pcretest% -C pcre8 >NUL
52    set do1=yes  set support8=%ERRORLEVEL%
53    set do2=yes  %pcretest% -C pcre16 >NUL
54    set do3=yes  set support16=%ERRORLEVEL%
55    set do4=yes  %pcretest% -C utf >NUL
56    set do5=yes  set utf=%ERRORLEVEL%
57    set do6=yes  %pcretest% -C ucp >NUL
58    set do7=yes  set ucp=%ERRORLEVEL%
59    set do8=yes  %pcretest% -C jit >NUL
60    set do9=yes  set jit=%ERRORLEVEL%
61    set do10=yes  
62    set do11=yes  if %support8% EQU 1 (
63    set do12=yes  if not exist testout8 md testout8
64  )  if not exist testoutstudy8 md testoutstudy8
65    if not exist testoutjit8 md testoutjit8
66  if "%do1%" == "yes" (  )
67    call :runtest 1 "Main functionality - Compatible with Perl 5.8 and above" -q  
68    if errorlevel 1 exit /b 1  if %support16% EQU 1 (
69  )  if not exist testout16 md testout16
70    if not exist testoutstudy16 md testoutstudy16
71  if "%do2%" == "yes" (  if not exist testoutjit16 md testoutjit16
72    call :runtest 2 "API, errors, internals, and non-Perl stuff" -q  )
73    if errorlevel 1 exit /b 1  
74  )  set do1=no
75    set do2=no
76  if "%do3%" == "yes" (  set do3=no
77    call :runtest 3 "Locale-specific features" -q  set do4=no
78    if errorlevel 1 exit /b 1  set do5=no
79  )  set do6=no
80    set do7=no
81  if "%do4%" == "yes" (  set do8=no
82    call :runtest 4 "UTF-8 support - Compatible with Perl 5.8 and above" -q  set do9=no
83    if errorlevel 1 exit /b 1  set do10=no
84  )  set do11=no
85    set do12=no
86  if "%do5%" == "yes" (  set do13=no
87    call :runtest 5 "API, internals, and non-Perl stuff for UTF-8 support" -q  set do14=no
88    if errorlevel 1 exit /b 1  set do15=no
89  )  set do16=no
90    set do17=no
91  if "%do6%" == "yes" (  set do18=no
92    call :runtest 6 "Unicode property support - Compatible with Perl 5.10 and above" -q  set do19=no
93    if errorlevel 1 exit /b 1  set do20=no
94  )  set all=yes
95    
96  if "%do7%" == "yes" (  for %%a in (%*) do (
97    call :runtest 7 "DFA matching" -q -dfa    set valid=no
98    if errorlevel 1 exit /b 1    for %%v in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20) do if %%v == %%a set valid=yes
99  )    if "!valid!" == "yes" (
100        set do%%a=yes
101  if "%do8%" == "yes" (      set all=no
102    call :runtest 8 "DFA matching with UTF-8" -q -dfa  ) else (
103    if errorlevel 1 exit /b 1      echo Invalid test number - %%a!
104  )          echo Usage %0 [ test_number ] ...
105            echo Where test_number is one or more optional test numbers 1 through 20, default is all tests.
106  if "%do9%" == "yes" (          exit /b 1
107    call :runtest 9 "DFA matching with Unicode properties" -q -dfa  )
108    if errorlevel 1 exit /b 1  )
109  )  set failed="no"
110    
111  if "%do10%" == "yes" (  if "%all%" == "yes" (
112    call :runtest 10 "Internal offsets and code size tests" -q    set do1=yes
113    if errorlevel 1 exit /b 1    set do2=yes
114  )    set do3=yes
115      set do4=yes
116  if "%do11%" == "yes" (    set do5=yes
117    call :runtest 11 "Features from Perl 5.10 and above" -q    set do6=yes
118    if errorlevel 1 exit /b 1    set do7=yes
119  )    set do8=yes
120      set do9=yes
121  if "%do12%" == "yes" (    set do10=yes
122    call :runtest 12 "API, internals, and non-Perl stuff for Unicode property support" -q    set do11=yes
123    if errorlevel 1 exit /b 1    set do12=yes
124  )    set do13=yes
125      set do14=yes
126  exit /b 0    set do15=yes
127      set do16=yes
128      set do17=yes
129  @rem Function to execute pcretest and compare the output    set do18=yes
130  @rem Arguments are as follows:    set do19=yes
131  @rem    set do20=yes
132  @rem       1 = test number  )
133  @rem       2 = test name (use double quotes)  
134  @rem   3 - 9 = pcretest options  @echo RunTest.bat's pcretest output is written to newly created subfolders named
135    @echo testout, testoutstudy and testoutjit.
136  :runtest  @echo.
137    
138  if [%1] == [] (  set mode=
139    echo Missing test number argument!  set bits=8
140    exit /b 1  
141  )  :nextMode
142    if "%mode%" == "" (
143  if [%2] == [] (    if %support8% EQU 0 goto modeSkip
144    echo Missing test name argument!    echo.
145    exit /b 1    echo ---- Testing 8-bit library ----
146  )    echo.
147    ) else (
148  set testinput=testinput%1    if %support16% EQU 0 goto modeSkip
149  set testoutput=testoutput%1    echo.
150  if exist %srcdir%\testdata\win%testinput% (    echo ---- Testing 16-bit library ----
151    set testinput=wintestinput%1    echo.
152    set testoutput=wintestoutput%1  )
153  )  if "%do1%" == "yes" call :do1
154    if "%do2%" == "yes" call :do2
155  echo.  if "%do3%" == "yes" call :do3
156  echo Test %1: %2  if "%do4%" == "yes" call :do4
157    if "%do5%" == "yes" call :do5
158  %pcretest% %3 %4 %5 %6 %7 %8 %9 %srcdir%\testdata\%testinput% > testout\%testoutput%  if "%do6%" == "yes" call :do6
159  if errorlevel 1 (  if "%do7%" == "yes" call :do7
160    echo Test %1: %pcretest% failed!  if "%do8%" == "yes" call :do8
161    exit /b 1  if "%do9%" == "yes" call :do9
162  )  if "%do10%" == "yes" call :do10
163    if "%do11%" == "yes" call :do11
164  fc /n %srcdir%\testdata\%testoutput% testout\%testoutput%  if "%do12%" == "yes" call :do12
165  if errorlevel 1 (  if "%do13%" == "yes" call :do13
166    echo Test %1: file compare failed!  if "%do14%" == "yes" call :do14
167    exit /b 1  if "%do15%" == "yes" call :do15
168  )  if "%do16%" == "yes" call :do16
169    if "%do17%" == "yes" call :do17
170  echo Test %1: Passed.  if "%do18%" == "yes" call :do18
171  echo.  if "%do19%" == "yes" call :do19
172  exit /b 0  if "%do20%" == "yes" call :do20
173    :modeSkip
174    if "%mode%" == "" (
175      set mode=-16
176      set bits=16
177      goto nextMode
178    )
179    
180    if %failed% == "yes" (
181    echo In above output, one or more of the various tests failed!
182    exit /b 1
183    )
184    echo All OK
185    goto :eof
186    
187    :runsub
188    @rem Function to execute pcretest and compare the output
189    @rem Arguments are as follows:
190    @rem
191    @rem       1 = test number
192    @rem       2 = outputdir
193    @rem       3 = test name use double quotes
194    @rem   4 - 9 = pcretest options
195    
196    if [%1] == [] (
197      echo Missing test number argument!
198      exit /b 1
199    )
200    
201    if [%2] == [] (
202      echo Missing outputdir!
203      exit /b 1
204    )
205    
206    if [%3] == [] (
207      echo Missing test name argument!
208      exit /b 1
209    )
210    
211    set testinput=testinput%1
212    set testoutput=testoutput%1
213    if exist %srcdir%\testdata\win%testinput% (
214      set testinput=wintestinput%1
215      set testoutput=wintestoutput%1
216    )
217    
218    echo Test %1: %3
219    %pcretest% %mode% %4 %5 %6 %7 %8 %9 %srcdir%\testdata\%testinput% >%2%bits%\%testoutput%
220    if errorlevel 1 (
221      echo.          failed executing command-line:
222      echo.            %pcretest% %mode% %4 %5 %6 %7 %8 %9 %srcdir%\testdata\%testinput% ^>%2%bits%\%testoutput%
223      set failed="yes"
224      goto :eof
225    )
226    
227    if [%1]==[11] (
228      fc /n %srcdir%\testdata\%testoutput%-%bits% %2%bits%\%testoutput% >NUL
229    ) else (
230      fc /n %srcdir%\testdata\%testoutput% %2%bits%\%testoutput% >NUL
231    )
232    if errorlevel 1 (
233      echo.          failed comparison: fc /n %srcdir%\testdata\%testoutput% %2%bits%\%testoutput%
234      if [%1]==[2] (
235        echo.
236        echo ** Test 2 requires a lot of stack. PCRE can be configured to
237        echo ** use heap for recursion. Otherwise, to pass Test 2
238        echo ** you generally need to allocate 8 mb stack to PCRE.
239        echo ** See the 'pcrestack' page for a discussion of PCRE's
240        echo ** stack usage.
241        echo.
242    )
243      if [%1]==[3] (
244        echo.
245        echo ** Test 3 failure usually means french locale is not
246        echo ** available on the system, rather than a bug or problem with PCRE.
247        echo.
248        goto :eof
249    )
250    
251      set failed="yes"
252      goto :eof
253    )
254    
255    echo.          Passed.
256    goto :eof
257    
258    :do1
259    call :runsub 1 testout "Main functionality - Compatible with Perl 5.8 and above" -q
260    call :runsub 1 testoutstudy "Test with Study Override" -q -s
261    if %jit% EQU 1 call :runsub 1 testoutjit "Test with JIT Override" -q -s+
262    goto :eof
263    
264    :do2
265      call :runsub 2 testout "API, errors, internals, and non-Perl stuff (not UTF-8)" -q
266      call :runsub 2 testoutstudy "Test with Study Override" -q -s
267      if %jit% EQU 1 call :runsub 2 testoutjit "Test with JIT Override" -q -s+
268    goto :eof
269    
270    :do3
271      call :runsub 3 testout "Locale-specific features" -q
272      call :runsub 3 testoutstudy "Test with Study Override" -q -s
273      if %jit% EQU 1 call :runsub 3 testoutjit "Test with JIT Override" -q -s+
274    goto :eof
275    
276    :do4
277      if %utf% EQU 0 (
278      echo Test 4 Skipped due to absence of UTF-%bits% support.
279      goto :eof
280    )
281      call :runsub 4 testout "UTF-%bits% support - Compatible with Perl 5.8 and above" -q
282      call :runsub 4 testoutstudy "Test with Study Override" -q -s
283      if %jit% EQU 1 call :runsub 4 testoutjit "Test with JIT Override" -q -s+
284    goto :eof
285    
286    :do5
287      if %utf% EQU 0 (
288      echo Test 5 Skipped due to absence of UTF-%bits% support.
289      goto :eof
290    )
291      call :runsub 5 testout "API, internals, and non-Perl stuff for UTF-%bits% support" -q
292      call :runsub 5 testoutstudy "Test with Study Override" -q -s
293      if %jit% EQU 1 call :runsub 5 testoutjit "Test with JIT Override" -q -s+
294    goto :eof
295    
296    :do6
297    if %ucp% EQU 0 (
298      echo Test 6 Skipped due to absence of Unicode property support.
299      goto :eof
300    )
301      call :runsub 6 testout "Unicode property support (Compatible with Perl >= 5.10)" -q
302      call :runsub 6 testoutstudy "Test with Study Override" -q -s
303      if %jit% EQU 1 call :runsub 6 testoutjit "Test with JIT Override" -q -s+
304    goto :eof
305    
306    :do7
307    if %ucp% EQU 0 (
308      echo Test 7 Skipped due to absence of Unicode property support.
309      goto :eof
310    )
311      call :runsub 7 testout "API, internals, and non-Perl stuff for Unicode property support" -q
312      call :runsub 7 testoutstudy "Test with Study Override" -q -s
313      if %jit% EQU 1 call :runsub 7 testoutjit "Test with JIT Override" -q -s+
314    goto :eof
315    
316    :do8
317      call :runsub 8 testout "DFA matching main functionality" -q -dfa
318      call :runsub 8 testoutstudy "Test with Study Override" -q -dfa -s
319    goto :eof
320    
321    :do9
322      if %utf% EQU 0 (
323      echo Test 9 Skipped due to absence of UTF-%bits% support.
324      goto :eof
325    )
326      call :runsub 9 testout "DFA matching with UTF-%bits%" -q -dfa
327      call :runsub 9 testoutstudy "Test with Study Override" -q -dfa -s
328      goto :eof
329    
330    :do10
331      if %ucp% EQU 0 (
332      echo Test 10 Skipped due to absence of Unicode property support.
333      goto :eof
334    )
335      call :runsub 10 testout "DFA matching with Unicode properties" -q -dfa
336      call :runsub 10 testoutstudy "Test with Study Override" -q -dfa -s
337    goto :eof
338    
339    :do11
340      if NOT %link_size% EQU 2 (
341      echo Test 11 Skipped because link size is not 2.
342      goto :eof
343    )
344      if %ucp% EQU 0 (
345      echo Test 11 Skipped due to absence of Unicode property support.
346      goto :eof
347    )
348      call :runsub 11 testout "Internal offsets and code size tests" -q
349      call :runsub 11 testoutstudy "Test with Study Override" -q -s
350    goto :eof
351    
352    :do12
353    if %jit% EQU 0 (
354      echo Test 12 Skipped due to absence of JIT support.
355      goto :eof
356    )
357      call :runsub 12 testout "JIT-specific features - have JIT" -q
358    goto :eof
359    
360    :do13
361      if %jit% EQU 1 (
362      echo Test 13 Skipped due to presence of JIT support.
363      goto :eof
364    )
365      call :runsub 13 testout "JIT-specific features - no JIT" -q
366    goto :eof
367    
368    :do14
369      if NOT %bits% EQU 8 (
370      echo Test 14 Skipped when running 16-bit tests.
371      goto :eof
372    )
373      copy /Y %srcdir%\testdata\saved16 testsaved16
374      call :runsub 14 testout "Specials for the basic 8-bit library" -q
375      call :runsub 14 testoutstudy "Test with Study Override" -q -s
376      if %jit% EQU 1 call :runsub 14 testoutjit "Test with JIT Override" -q -s+
377    goto :eof
378    
379    :do15
380      if NOT %bits% EQU 8 (
381      echo Test 15 Skipped when running 16-bit tests.
382      goto :eof
383    )
384      if %utf% EQU 0 (
385      echo Test 15 Skipped due to absence of UTF-8 support.
386      goto :eof
387    )
388      call :runsub 15 testout "Specials for the 8-bit library with UTF-8 support" -q
389      call :runsub 15 testoutstudy "Test with Study Override" -q -s
390      if %jit% EQU 1 call :runsub 15 testoutjit "Test with JIT Override" -q -s+
391    goto :eof
392    
393    :do16
394      if NOT %bits% EQU 8 (
395      echo Test 16 Skipped when running 16-bit tests.
396      goto :eof
397    )
398      if %ucp% EQU 0 (
399      echo Test 16 Skipped due to absence of Unicode property support.
400      goto :eof
401    )
402      call :runsub 16 testout "Specials for the 8-bit library with Unicode propery support" -q
403      call :runsub 16 testoutstudy "Test with Study Override" -q -s
404      if %jit% EQU 1 call :runsub 16 testoutjit "Test with JIT Override" -q -s+
405    goto :eof
406    
407    :do17
408      if NOT %bits% EQU 16 (
409      echo Test 17 Skipped when running 8-bit tests.
410      goto :eof
411    )
412      copy /Y %srcdir%\testdata\saved8 testsaved8
413      copy /Y %srcdir%\testdata\saved16LE-1 testsaved16LE-1
414      copy /Y %srcdir%\testdata\saved16BE-1 testsaved16BE-1
415      call :runsub 17 testout "Specials for the basic 8-bit library" -q
416      call :runsub 17 testoutstudy "Test with Study Override" -q -s
417      if %jit% EQU 1 call :runsub 17 testoutjit "Test with JIT Override" -q -s+
418    goto :eof
419    
420    :do18
421      if NOT %bits% EQU 16 (
422      echo Test 18 Skipped when running 8-bit tests.
423      goto :eof
424    )
425      if %utf% EQU 0 (
426      echo Test 18 Skipped due to absence of UTF-8 support.
427      goto :eof
428    )
429      copy /Y %srcdir%\testdata\saved16LE-2 testsaved16LE-2
430      copy /Y %srcdir%\testdata\saved16BE-2 testsaved16BE-2
431      call :runsub 18 testout "Specials for the basic 8-bit library" -q
432      call :runsub 18 testoutstudy "Test with Study Override" -q -s
433      if %jit% EQU 1 call :runsub 18 testoutjit "Test with JIT Override" -q -s+
434    goto :eof
435    
436    :do19
437      if NOT %bits% EQU 16 (
438      echo Test 19 Skipped when running 8-bit tests.
439      goto :eof
440    )
441      if %ucp% EQU 0 (
442      echo Test 19 Skipped due to absence of Unicode property support.
443      goto :eof
444    )
445      call :runsub 19 testout "Specials for the basic 8-bit library" -q
446      call :runsub 19 testoutstudy "Test with Study Override" -q -s
447      if %jit% EQU 1 call :runsub 19 testoutjit "Test with JIT Override" -q -s+
448    goto :eof
449    
450    :do20
451      if NOT %bits% EQU 16 (
452      echo Test 20 Skipped when running 8-bit tests.
453      goto :eof
454    )
455      call :runsub 20 testout "DFA specials for the basic 16-bit library" -q
456      call :runsub 20 testoutstudy "Test with Study Override" -q -s
457    goto :eof
458    
459    :conferror
460    @echo.
461    @echo Either your build is incomplete or you have a configuration error.
462    @echo.
463    @echo If configured with cmake and executed via "make test" or the MSVC "RUN_TESTS"
464    @echo project, pcre_test.bat defines variables and automatically calls RunTest.bat.
465    @echo For manual testing of all available features, after configuring with cmake
466    @echo and building, you can run the built pcre_test.bat. For best results with
467    @echo cmake builds and tests avoid directories with full path names that include
468    @echo spaces for source or build.
469    @echo.
470    @echo Otherwise, if the build dir is in a subdir of the source dir, testdata needed
471    @echo for input and verification should be found automatically when (from the
472    @echo location of the the built exes) you call RunTest.bat. By default RunTest.bat
473    @echo runs all tests compatible with the linked pcre library but it can be given
474    @echo a test number as an argument.
475    @echo.
476    @echo If the build dir is not under the source dir you can either copy your exes
477    @echo to the source folder or copy RunTest.bat and the testdata folder to the
478    @echo location of your built exes and then run RunTest.bat.
479    @echo.
480    goto :eof

Legend:
Removed from v.622  
changed lines
  Added in v.1053

  ViewVC Help
Powered by ViewVC 1.1.5