Annotation of embedaddon/pcre/RunTest.bat, revision 1.1
1.1 ! misho 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>