/[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 194 by ph10, Mon Jul 30 11:37:52 2007 UTC revision 1053 by zherczeg, Tue Oct 9 15:43:08 2012 UTC
# Line 1  Line 1 
1  @rem  This file was contributed by Ralf Junker, and touched up by  @echo off
2  @rem  Daniel Richard G. Test 10 added by Philip H.  @rem This file must use CRLF linebreaks to function properly
3  @rem  @rem and requires both pcretest and pcregrep
4  @rem  MS Windows batch file to run pcretest on testfiles with the correct  @rem  This file was originally contributed by Ralf Junker, and touched up by
5  @rem  options.  @rem  Daniel Richard G. Tests 10-12 added by Philip H.
6  @rem  @rem  Philip H also changed test 3 to use "wintest" files.
7  @rem  Output is written to a newly created subfolder named "testdata".  @rem
8    @rem  Updated by Tom Fortmann to support explicit test numbers on the command line.
9  setlocal  @rem  Added argument validation and added error reporting.
10    @rem
11  if [%srcdir%]==[]   set srcdir=.  @rem  MS Windows batch file to run pcretest on testfiles with the correct
12  if [%pcretest%]==[] set pcretest=pcretest  @rem  options.
13    @rem
14  if not exist testout md testout  @rem Sheri Pierce added logic to skip feature dependent tests
15    @rem tests 4 5 9 15 and 18 require utf support
16  %pcretest% -q      %srcdir%\testdata\testinput1 > testout\testoutput1  @rem tests 6 7 10 16 and 19 require ucp support
17  %pcretest% -q      %srcdir%\testdata\testinput2 > testout\testoutput2  @rem 11 requires ucp and link size 2
18  %pcretest% -q      %srcdir%\testdata\testinput3 > testout\testoutput3  @rem 12 requires presense of jit support
19  %pcretest% -q      %srcdir%\testdata\testinput4 > testout\testoutput4  @rem 13 requires absence of jit support
20  %pcretest% -q      %srcdir%\testdata\testinput5 > testout\testoutput5  @rem Sheri P also added override tests for study and jit testing
21  %pcretest% -q      %srcdir%\testdata\testinput6 > testout\testoutput6  @rem Zoltan Herczeg added libpcre16 support
22  %pcretest% -q -dfa %srcdir%\testdata\testinput7 > testout\testoutput7  
23  %pcretest% -q -dfa %srcdir%\testdata\testinput8 > testout\testoutput8  setlocal enabledelayedexpansion
24  %pcretest% -q -dfa %srcdir%\testdata\testinput9 > testout\testoutput9  if [%srcdir%]==[] (
25  %pcretest% -q      %srcdir%\testdata\testinput10 > testout\testoutput10  if exist testdata\ set srcdir=.)
26    if [%srcdir%]==[] (
27  fc /n %srcdir%\testdata\testoutput1 testout\testoutput1  if exist ..\testdata\ set srcdir=..)
28  fc /n %srcdir%\testdata\testoutput2 testout\testoutput2  if [%srcdir%]==[] (
29  rem fc /n %srcdir%\testdata\testoutput3 testout\testoutput3  if exist ..\..\testdata\ set srcdir=..\..)
30  fc /n %srcdir%\testdata\testoutput4 testout\testoutput4  if NOT exist %srcdir%\testdata\ (
31  fc /n %srcdir%\testdata\testoutput5 testout\testoutput5  Error: echo distribution testdata folder not found!
32  fc /n %srcdir%\testdata\testoutput6 testout\testoutput6  call :conferror
33  fc /n %srcdir%\testdata\testoutput7 testout\testoutput7  exit /b 1
34  fc /n %srcdir%\testdata\testoutput8 testout\testoutput8  goto :eof
35  fc /n %srcdir%\testdata\testoutput9 testout\testoutput9  )
36  fc /n %srcdir%\testdata\testoutput10 testout\testoutput10  
37    if [%pcretest%]==[] set pcretest=.\pcretest.exe
38    
39    echo source dir is %srcdir%
40    echo pcretest=%pcretest%
41    
42    if NOT exist %pcretest% (
43    echo Error: %pcretest% not found!
44    echo.
45    call :conferror
46    exit /b 1
47    )
48    
49    %pcretest% -C linksize >NUL
50    set link_size=%ERRORLEVEL%
51    %pcretest% -C pcre8 >NUL
52    set support8=%ERRORLEVEL%
53    %pcretest% -C pcre16 >NUL
54    set support16=%ERRORLEVEL%
55    %pcretest% -C utf >NUL
56    set utf=%ERRORLEVEL%
57    %pcretest% -C ucp >NUL
58    set ucp=%ERRORLEVEL%
59    %pcretest% -C jit >NUL
60    set jit=%ERRORLEVEL%
61    
62    if %support8% EQU 1 (
63    if not exist testout8 md testout8
64    if not exist testoutstudy8 md testoutstudy8
65    if not exist testoutjit8 md testoutjit8
66    )
67    
68    if %support16% EQU 1 (
69    if not exist testout16 md testout16
70    if not exist testoutstudy16 md testoutstudy16
71    if not exist testoutjit16 md testoutjit16
72    )
73    
74    set do1=no
75    set do2=no
76    set do3=no
77    set do4=no
78    set do5=no
79    set do6=no
80    set do7=no
81    set do8=no
82    set do9=no
83    set do10=no
84    set do11=no
85    set do12=no
86    set do13=no
87    set do14=no
88    set do15=no
89    set do16=no
90    set do17=no
91    set do18=no
92    set do19=no
93    set do20=no
94    set all=yes
95    
96    for %%a in (%*) do (
97      set valid=no
98      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        set all=no
102    ) else (
103        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            exit /b 1
107    )
108    )
109    set failed="no"
110    
111    if "%all%" == "yes" (
112      set do1=yes
113      set do2=yes
114      set do3=yes
115      set do4=yes
116      set do5=yes
117      set do6=yes
118      set do7=yes
119      set do8=yes
120      set do9=yes
121      set do10=yes
122      set do11=yes
123      set do12=yes
124      set do13=yes
125      set do14=yes
126      set do15=yes
127      set do16=yes
128      set do17=yes
129      set do18=yes
130      set do19=yes
131      set do20=yes
132    )
133    
134    @echo RunTest.bat's pcretest output is written to newly created subfolders named
135    @echo testout, testoutstudy and testoutjit.
136    @echo.
137    
138    set mode=
139    set bits=8
140    
141    :nextMode
142    if "%mode%" == "" (
143      if %support8% EQU 0 goto modeSkip
144      echo.
145      echo ---- Testing 8-bit library ----
146      echo.
147    ) else (
148      if %support16% EQU 0 goto modeSkip
149      echo.
150      echo ---- Testing 16-bit library ----
151      echo.
152    )
153    if "%do1%" == "yes" call :do1
154    if "%do2%" == "yes" call :do2
155    if "%do3%" == "yes" call :do3
156    if "%do4%" == "yes" call :do4
157    if "%do5%" == "yes" call :do5
158    if "%do6%" == "yes" call :do6
159    if "%do7%" == "yes" call :do7
160    if "%do8%" == "yes" call :do8
161    if "%do9%" == "yes" call :do9
162    if "%do10%" == "yes" call :do10
163    if "%do11%" == "yes" call :do11
164    if "%do12%" == "yes" call :do12
165    if "%do13%" == "yes" call :do13
166    if "%do14%" == "yes" call :do14
167    if "%do15%" == "yes" call :do15
168    if "%do16%" == "yes" call :do16
169    if "%do17%" == "yes" call :do17
170    if "%do18%" == "yes" call :do18
171    if "%do19%" == "yes" call :do19
172    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.194  
changed lines
  Added in v.1053

  ViewVC Help
Powered by ViewVC 1.1.5