1: @echo off
2: @rem This file must use CRLF linebreaks to function properly
3: @rem and requires both pcretest and pcregrep
4: @rem This file was originally contributed by Ralf Junker, and touched up by
5: @rem Daniel Richard G. Tests 10-12 added by Philip H.
6: @rem Philip H also changed test 3 to use "wintest" files.
7: @rem
8: @rem Updated by Tom Fortmann to support explicit test numbers on the command line.
9: @rem Added argument validation and added error reporting.
10: @rem
11: @rem MS Windows batch file to run pcretest on testfiles with the correct
12: @rem options.
13: @rem
14: @rem Sheri Pierce added logic to skip feature dependent tests
15: @rem tests 4 5 8 and 12 require utf8 support
16: @rem tests 6 9 13 require ucp support
17: @rem 10 requires ucp and link size 2
18: @rem 14 requires presense of jit support
19: @rem 15 requires absence of jit support
20: @rem Sheri P also added override tests for study and jit testing
21: @rem JIT testing n/a for tests 7-10, removed JIT override test for them
22: @rem removed override tests for 14-15
23:
24: setlocal enabledelayedexpansion
25: if [%srcdir%]==[] (
26: if exist testdata\ set srcdir=.)
27: if [%srcdir%]==[] (
28: if exist ..\testdata\ set srcdir=..)
29: if [%srcdir%]==[] (
30: if exist ..\..\testdata\ set srcdir=..\..)
31: if NOT exist "%srcdir%\testdata\" (
32: Error: echo distribution testdata folder not found!
33: call :conferror
34: exit /b 1
35: goto :eof
36: )
37:
38: if "%pcregrep%"=="" set pcregrep=.\pcregrep.exe
39: if "%pcretest%"=="" set pcretest=.\pcretest.exe
40:
41: echo source dir is %srcdir%
42: echo pcretest=%pcretest%
43: echo pcregrep=%pcregrep%
44:
45: if NOT exist "%pcregrep%" (
46: echo Error: "%pcregrep%" not found!
47: echo.
48: call :conferror
49: exit /b 1
50: )
51:
52: if NOT exist "%pcretest%" (
53: echo Error: "%pcretest%" not found!
54: echo.
55: call :conferror
56: exit /b 1
57: )
58:
59: "%pcretest%" -C|"%pcregrep%" --no-jit "No UTF-8 support">NUL
60: set utf8=%ERRORLEVEL%
61: "%pcretest%" -C|"%pcregrep%" --no-jit "No Unicode properties support">NUL
62: set ucp=%ERRORLEVEL%
63: "%pcretest%" -C|"%pcregrep%" --no-jit "No just-in-time compiler support">NUL
64: set jit=%ERRORLEVEL%
65: "%pcretest%" -C|"%pcregrep%" --no-jit "Internal link size = 2">NUL
66: set link2=%ERRORLEVEL%
67: set ucpandlink2=0
68: if %ucp% EQU 1 (
69: if %link2% EQU 0 set ucpandlink2=1
70: )
71:
72: if not exist testout md testout
73: if not exist testoutstudy md testoutstudy
74: if not exist testoutjit md testoutjit
75:
76: set do1=no
77: set do2=no
78: set do3=no
79: set do4=no
80: set do5=no
81: set do6=no
82: set do7=no
83: set do8=no
84: set do9=no
85: set do10=no
86: set do11=no
87: set do12=no
88: set do13=no
89: set do14=no
90: set do15=no
91: set all=yes
92:
93: for %%a in (%*) do (
94: set valid=no
95: for %%v in (1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) do if %%v == %%a set valid=yes
96: if "!valid!" == "yes" (
97: set do%%a=yes
98: set all=no
99: ) else (
100: echo Invalid test number - %%a!
101: echo Usage %0 [ test_number ] ...
102: echo Where test_number is one or more optional test numbers 1 through 15, default is all tests.
103: exit /b 1
104: )
105: )
106: set failed="no"
107:
108: if "%all%" == "yes" (
109: set do1=yes
110: set do2=yes
111: set do3=yes
112: set do4=yes
113: set do5=yes
114: set do6=yes
115: set do7=yes
116: set do8=yes
117: set do9=yes
118: set do10=yes
119: set do11=yes
120: set do12=yes
121: set do13=yes
122: set do14=yes
123: set do15=yes
124: )
125:
126: @echo RunTest.bat's pcretest output is written to newly created subfolders named
127: @echo testout, testoutstudy and testoutjit.
128: @echo.
129: if "%do1%" == "yes" call :do1
130: if "%do2%" == "yes" call :do2
131: if "%do3%" == "yes" call :do3
132: if "%do4%" == "yes" call :do4
133: if "%do5%" == "yes" call :do5
134: if "%do6%" == "yes" call :do6
135: if "%do7%" == "yes" call :do7
136: if "%do8%" == "yes" call :do8
137: if "%do9%" == "yes" call :do9
138: if "%do10%" == "yes" call :do10
139: if "%do11%" == "yes" call :do11
140: if "%do12%" == "yes" call :do12
141: if "%do13%" == "yes" call :do13
142: if "%do14%" == "yes" call :do14
143: if "%do15%" == "yes" call :do15
144: if %failed% == "yes" (
145: echo In above output, one or more of the various tests failed!
146: exit /b 1
147: )
148: echo All OK
149: goto :eof
150:
151: :runsub
152: @rem Function to execute pcretest and compare the output
153: @rem Arguments are as follows:
154: @rem
155: @rem 1 = test number
156: @rem 2 = outputdir
157: @rem 3 = test name use double quotes
158: @rem 4 - 9 = pcretest options
159:
160: if [%1] == [] (
161: echo Missing test number argument!
162: exit /b 1
163: )
164:
165: if [%2] == [] (
166: echo Missing outputdir!
167: exit /b 1
168: )
169:
170: if [%3] == [] (
171: echo Missing test name argument!
172: exit /b 1
173: )
174:
175: set testinput=testinput%1
176: set testoutput=testoutput%1
177: if exist %srcdir%\testdata\win%testinput% (
178: set testinput=wintestinput%1
179: set testoutput=wintestoutput%1
180: )
181:
182: echo Test %1: %3
183: "%pcretest%" %4 %5 %6 %7 %8 %9 "%srcdir%\testdata\%testinput%">%2\%testoutput%
184: if errorlevel 1 (
185: echo. failed executing command-line:
186: echo. "%pcretest%" %4 %5 %6 %7 %8 %9 "%srcdir%\testdata\%testinput%"^>%2\%testoutput%
187: set failed="yes"
188: goto :eof
189: )
190:
191: fc /n "%srcdir%\testdata\%testoutput%" "%2\%testoutput%">NUL
192: if errorlevel 1 (
193: echo. failed comparison: fc /n "%srcdir%\testdata\%testoutput%" "%2\%testoutput%"
194: set failed="yes"
195: if [%1]==[2] (
196: echo.
197: echo ** Test 2 requires a lot of stack. PCRE can be configured to
198: echo ** use heap for recursion. Otherwise, to pass Test 2
199: echo ** you generally need to allocate 8 mb stack to PCRE.
200: echo ** See the 'pcrestack' page for a discussion of PCRE's
201: echo ** stack usage.
202: echo.
203: )
204: if [%1]==[3] (
205: echo.
206: echo ** Test 3 failure usually means french locale is not
207: echo ** available on the system, rather than a bug or problem with PCRE.
208: echo.
209: )
210:
211: goto :eof
212: )
213:
214: echo. Passed.
215: goto :eof
216:
217: :do1
218: call :runsub 1 testout "Main functionality - Compatible with Perl 5.8 and above" -q
219: call :runsub 1 testoutstudy "Test with Study Override" -q -s
220: if %jit% EQU 1 call :runsub 1 testoutjit "Test with JIT Override" -q -s+
221: goto :eof
222:
223: :do2
224: call :runsub 2 testout "API, errors, internals, and non-Perl stuff (not UTF-8)" -q
225: call :runsub 2 testoutstudy "Test with Study Override" -q -s
226: if %jit% EQU 1 call :runsub 2 testoutjit "Test with JIT Override" -q -s+
227: goto :eof
228:
229: :do3
230: call :runsub 3 testout "Locale-specific features" -q
231: call :runsub 3 testoutstudy "Test with Study Override" -q -s
232: if %jit% EQU 1 call :runsub 3 testoutjit "Test with JIT Override" -q -s+
233: goto :eof
234:
235: :do4
236: if %utf8% EQU 0 (
237: echo Test 4 Skipped due to absence of UTF-8 support.
238: goto :eof
239: )
240: call :runsub 4 testout "UTF-8 support - Compatible with Perl 5.8 and above" -q
241: call :runsub 4 testoutstudy "Test with Study Override" -q -s
242: if %jit% EQU 1 call :runsub 4 testoutjit "Test with JIT Override" -q -s+
243: goto :eof
244:
245: :do5
246: if %utf8% EQU 0 (
247: echo Test 5 Skipped due to absence of UTF-8 support.
248: goto :eof
249: )
250: call :runsub 5 testout "API, internals, and non-Perl stuff for UTF-8 support" -q
251: call :runsub 5 testoutstudy "Test with Study Override" -q -s
252: if %jit% EQU 1 call :runsub 5 testoutjit "Test with JIT Override" -q -s+
253: goto :eof
254:
255: :do6
256: if %ucp% EQU 0 (
257: echo Test 6 Skipped due to absence of ucp support.
258: goto :eof
259: )
260: call :runsub 6 testout "Unicode property support - Compatible with Perl 5.10 and above" -q
261: call :runsub 6 testoutstudy "Test with Study Override" -q -s
262: if %jit% EQU 1 call :runsub 6 testoutjit "Test with JIT Override" -q -s+
263: goto :eof
264:
265: :do7
266: call :runsub 7 testout "DFA matching" -q -dfa
267: call :runsub 7 testoutstudy "Test with Study Override" -q -dfa -s
268: goto :eof
269:
270: :do8
271: if %utf8% EQU 0 (
272: echo Test 8 Skipped due to absence of UTF-8 support.
273: goto :eof
274: )
275: call :runsub 8 testout "DFA matching with UTF-8" -q -dfa
276: call :runsub 8 testoutstudy "Test with Study Override" -q -dfa -s
277: goto :eof
278:
279: :do9
280: if %ucp% EQU 0 (
281: echo Test 9 Skipped due to absence of ucp support.
282: goto :eof
283: )
284: call :runsub 9 testout "DFA matching with Unicode properties" -q -dfa
285: call :runsub 9 testoutstudy "Test with Study Override" -q -dfa -s
286: goto :eof
287:
288: :do10
289: if %ucpandlink2% EQU 0 (
290: echo Test 10 Skipped due to requirements of ucp support AND link size 2.
291: goto :eof
292: )
293: call :runsub 10 testout "Internal offsets and code size tests" -q
294: call :runsub 10 testoutstudy "Test with Study Override" -q -s
295: goto :eof
296:
297: :do11
298: call :runsub 11 testout "Features from Perl 5.10 and above" -q
299: call :runsub 11 testoutstudy "Test with Study Override" -q -s
300: if %jit% EQU 1 call :runsub 11 testoutjit "Test with JIT Override" -q -s+
301: goto :eof
302:
303: :do12
304: if %utf8% EQU 0 (
305: echo Test 12 Skipped due to absence of UTF-8 support.
306: goto :eof
307: )
308: call :runsub 12 testout "Features from Perl 5.10 and above w UTF-8" -q
309: call :runsub 12 testoutstudy "Test with Study Override" -q -s
310: if %jit% EQU 1 call :runsub 12 testoutjit "Test with JIT Override" -q -s+
311: goto :eof
312:
313: :do13
314: if %ucp% EQU 0 (
315: echo Test 13 Skipped due to absence of ucp support.
316: goto :eof
317: )
318: call :runsub 13 testout "API internals and non-Perl stuff for Unicode property support" -q
319: call :runsub 13 testoutstudy "Test with Study Override" -q -s
320: if %jit% EQU 1 call :runsub 13 testoutjit "Test with JIT Override" -q -s+
321: goto :eof
322:
323: :do14
324: if %jit% EQU 0 (
325: echo Test 14 Skipped due to absence of JIT support.
326: goto :eof
327: )
328: call :runsub 14 testout "JIT-specific features - have JIT" -q
329: goto :eof
330:
331: :do15
332: if %jit% EQU 1 (
333: echo Test 15 Skipped due to presence of JIT support.
334: goto :eof
335: )
336: call :runsub 15 testout "JIT-specific features - no JIT" -q
337: goto :eof
338:
339: :conferror
340: @echo.
341: @echo Either your build is incomplete or you have a configuration error.
342: @echo.
343: @echo If configured with cmake and executed via "make test" or the MSVC "RUN_TESTS"
344: @echo project, pcre_test.bat defines variables and automatically calls RunTest.bat.
345: @echo For manual testing of all available features, after configuring with cmake
346: @echo and building, you can run the built pcre_test.bat. For best results with
347: @echo cmake builds and tests avoid directories with full path names that include
348: @echo spaces for source or build.
349: @echo.
350: @echo Otherwise, if the build dir is in a subdir of the source dir, testdata needed
351: @echo for input and verification should be found automatically when (from the
352: @echo location of the the built exes) you call RunTest.bat. By default RunTest.bat
353: @echo runs all tests compatible with the linked pcre library but it can be given
354: @echo a test number as an argument.
355: @echo.
356: @echo If the build dir is not under the source dir you can either copy your exes
357: @echo to the source folder or copy RunTest.bat and the testdata folder to the
358: @echo location of your built exes and then run RunTest.bat.
359: @echo.
360: goto :eof
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>